Thread overview
How to use large size array, which are shared
Jan 27, 2013
Sparsh Mittal
Jan 27, 2013
Sparsh Mittal
Jan 27, 2013
Ali Çehreli
Jan 27, 2013
Sparsh Mittal
Jan 27, 2013
jerro
January 27, 2013
Hello

I read: "The total size of a static array cannot exceed 16Mb. A
dynamic array should be used instead for such large arrays."

I want to make array which is shared but also has a large size,
e.g.

      shared WorkerClass[numberOfWorkers] myWorkerArray;

where numberOfWorkers is large.

If I try to do:

      shared WorkerClass[] myWorkerArray;
      int main()
      {
        .....
        myWorkerArray = new WorkerClass [numberOfWorkers];
      }

the compiler does not allow me to do so.

My motivation is to create a global array, which I can use in
multiple functions which are created using "spawn".

Can you please help me.
January 27, 2013
Solved! I did:

myWorkerArray = new shared WorkerClass [numberOfWorkers];

Thanks.



January 27, 2013
On 01/27/2013 01:44 PM, Sparsh Mittal wrote:
> Hello
>
> I read: "The total size of a static array cannot exceed 16Mb. A
> dynamic array should be used instead for such large arrays."
>
> I want to make array which is shared but also has a large size,
> e.g.
>
> shared WorkerClass[numberOfWorkers] myWorkerArray;
>
> where numberOfWorkers is large.
>
> If I try to do:
>
> shared WorkerClass[] myWorkerArray;
> int main()
> {
> .....
> myWorkerArray = new WorkerClass [numberOfWorkers];

shared is a part of the type:

    myWorkerArray = new shared(WorkerClass)[numberOfWorkers];

Alternatively, you can initialize myWorkerArray in a 'static this' block:

class WorkerClass
{}

enum size_t numberOfWorkers = 10;

shared WorkerClass[] myWorkerArray;

static this()
{
    myWorkerArray = new shared(WorkerClass)[numberOfWorkers];
}

void main()
{}

> Can you please help me.

Please also consider the D.learn newsgroup. Such threads are very helpful on that newsgroup as well. :)

Ali

-- 
D Programming Language Tutorial: http://ddili.org/ders/d.en/index.html

January 27, 2013
Thanks a lot. Sure, I post such questions on that forum.
January 27, 2013
> shared WorkerClass[] myWorkerArray;
>
> static this()
> {
>     myWorkerArray = new shared(WorkerClass)[numberOfWorkers];
> }

This should probably be "shared static this()". I'm guessing one would want this to run once before main(), not every time a thread is started.