Question about std.bind

Dmitry Olshansky dmitry.olsh at gmail.com
Sat Nov 13 15:37:38 PST 2010


On 13.11.2010 14:11, Russel Winder wrote:
> On Sat, 2010-11-13 at 12:49 +0300, Dmitry Olshansky wrote:
> [ . . . ]
>> Well at least the Thread starts )
> Indeed :-)
>
>> I'd search for the clues by replacing all complicated logic with
>> writeln("Func x executed"); where x identifies functions.
>> If it prints all successfully, then it's bug in your code.
>> My best guess - you are not aware of "Thread-local by default", i.e. any
>> thread you spawn won't have access to parent's thread global data.
>> Anyway, I'd suggest posting it on D.learn with full source code, guys
>> there are quite helpful.
> Using gdb I get:
>
>          (gdb) bt
>          #0  0x0804ee1a in _d_monitorenter ()
>          #1  0x080498c2 in pi_d2_threads.partialSum (delta=9.9999999999999999998051260704522807e-10, end=4294967296, start=1000000001) at pi_d2_threads.d:25
>          #2  0x08049ae5 in pi_d2_threads.execute.__dgliteral1 (this=0xf7d24ce0) at pi_d2_threads.d:35
>          #3  0x0804f942 in core.thread.Thread.run() ()
>          #4  0x08055e3e in thread_entryPoint ()
>          #5  0xf7fa7cb2 in start_thread (arg=0xf7d1fb70) at pthread_create..c:304
>          #6  0xf7ef107e in clone () at ../sysdeps/unix/sysv/linux/i386/clone..S:130
>          (gdb)
>
> OK, so now I know I am trying to do things the wrong way, explicit
> threads, shared global data, and synchronized statements, but that is
> the whole point of my examples.  Segementation fault is not though the
> error message I think this should result in.  Anyway I have global
> objects:
>
>          shared real sum ;
>          shared Object sumMutex ;
Ah, another guess - you didn't initialize that sumMutex ?
Then put this somewhere before using it:

sumMutex = new shared(Object);


> then in the function partialSum that is being executed by each of the
> threads:
>
>          synchronized ( sumMutex ) { sum += localSum ; }
>
> It compiles, it executes, it seg faults.
>


-- 
Dmitry Olshansky



More information about the Digitalmars-d mailing list