Access to host from more Thread

Hi,

I have problem, that If I create more threads with this code:

HANDLE Handle_Of_Thread_1 = CreateThread( NULL, 0, Thread1, 0, 0, NULL);

HANDLE Handle_Of_Thread_2 = CreateThread( NULL, 0, Thread2, 0, 0, NULL);

and then I working with CUDA from Thread1, but after user action, Thread2 want to download data from GPU, Its crash!

All threads are synchronize so When Thread2 downloading data, Thread1 is stop with code:

while(thread_2_work)

    Sleep(50);

I try to download data from Thread1, just before Thread2 and work fine.

So Where is problem, its some CUDA bug, or Its problem with creating Threads, or … ???

PS: I gooogled this problem, and I found anything, since "thread problem " is common task for GPU computing :(