여기 ThrdFunc를 사용하여 5 개의 스레드를 생성 중입니다. 여기서 각 스레드는 listBox를 업데이트합니다.스레드가 일치하지 않는 결과를 표시합니다
나는이 방법으로 메시지를 기대하고 있었다. 처음에이 방법으로 제공하지만, 잠시 후 나는
Thread0:Adding msg
Thread18967654:Adding msg
Thread18967654:Adding msg
Thread18967654:Adding msg
같은 메시지가 시간이
Thread1:Adding msg
Thread2:Adding msg
Thread3:Adding msg
후 그러나이 코드입니다 :
for (int i = 0;i<6;i++)
{
nThreadNo = i+1;
hWndProducer[i] = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ProducerThrdFunc,(void*)&nThreadNo,0,&dwProducerThreadID[i]);
if (hWndProducer[i] == NULL)
{
//ErrorHandler(TEXT("CreateThread"));
ExitProcess(3);
}
}
DWORD WINAPI ThrdFunc (LPVOID n)
{
int *nThreadNo = (int*)n;
char chThreadNo[3];
memset(chThreadNo,0,3);
while(1)
{
itoa(*nThreadNo,chThreadNo,10);
char* pMsg1 = new char[100];
char* pMsg2 = new char[100];
memset(pMsg1,0,100);
memset(pMsg2,0,100);
strcpy(pMsg1," Thread No:");
strcat(pMsg1,chThreadNo);
strcat(pMsg1," Adding Msg:");
PostMessage(stThreadInfoProd.hWndHandle,UWM_ONUPDATEPRODUCERLIST,(WPARAM)pMsg1,0);
}
return 0;
}
는 nThreadNo' –
nThreadNo이 쓸만은의에 사용 아니, 우리는 nThreadNo' '의 정의를 의미 ThreadFunc –
내부 nThreadNo에서 수신 스레드에서 내가 값을 전달하고 스레드의 로컬 우리에게'의 선언을 제시해주십시오 고리. –