Этот код при установке Multithreaded(Release) распечатывает одно и то же число. Single-Threaded не намного лучше :(
Если закрыть rand() критической секцией, то Multithreaded без эмоций ваще, а Single - что-то вроде...
#include <windows.h>
#include <stdio.h>
#include <time.h>
DWORD WINAPI ThreadProc(void *dummy)
{
printf("%d\r\n", rand());
return(0);
}
int main()
{
HANDLE *Threads;
DWORD i, ThreadID, NumThreads=20;
srand((unsigned)time(NULL));
Threads=new HANDLE[NumThreads];
for(i=0; i<NumThreads; i++)
{
Threads[i]=CreateThread(NULL, 0, ThreadProc, 0, 0, &ThreadID);
}
WaitForMultipleObjects(NumThreads, Threads, true, INFINITE);
delete[] Threads;
return 0;
}
|