여러 쓰레드에 랜덤시드 뿌릴 때의 문제점 좀 도와주세요.
글쓴이: jzqioipst / 작성시간: 토, 2013/03/23 - 1:40오후
쓰레드에 랜덤시드 뿌려주는데 계속 모두 동일한 랜덤값만을 취하게 되네요.
srand(time(NULL))을 srand(GetTickCount())로 바꾸어 보아도 안 되고
쓰레드를 생성하고 나서 다음 쓰레드 생성전에 Sleep()을 걸어주어도 그 걸어준 시간차 만큼의 간격으로 동시에 끝나네요.
왜이러는 걸까요?
그리고 어떻게 해결할 수 있을까요?
// test.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.
//
#include "stdafx.h"
#include
#include
void RunGame(int a)
{
int cnt = rand()%200;
for(int i=0; i
{
printf("%c", a);
Sleep(500);
}
printf("\n%c가 종료되었습니다.\n", a);
}
DWORD WINAPI MyProc(LPVOID para)
{
int a;
a = (int)para;
RunGame(a);
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
srand(GetTickCount());
HANDLE hT[40];
for(int i=0; i<25; i++)
{
hT[i] = CreateThread(NULL, 0, MyProc, (LPVOID)(65+i), 0, NULL);
Sleep(10);
}
Sleep(100000);
return 0;
}
Forums:
소스가 짤렸는데 본문 내용 수정을 어떻게 하는지 모르겠네요.
댓글 달기