Mọi người ơi cho mình hỏi 1 chút. Mình có 1 đoạn code sau:
Mã:
#define NUM_THREAD 50
void func(void* p)
{
     char *tname;
    tname=reinterpret_cast< char*>(p);
    for(int i=0;i<10;i++)
   {
     printf("Thread ID: %6d   -   Thread name: %s   >%d 
",GetCurrentThreadID(),tname,i);
   }
}
void main
{
   HANDLE threadArr[NUM_THREAD];
char temp[30];
   for (i = 0; i < NUM_THREAD; i++) {
       sprintf(temp, "Thread#%d", i); 
        threadArr[i]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)func,temp,0,NULL);
       
        }
    WaitForMultipleObjects(NUM_THREAD,threadArr,TRUE,INFINITE);
    for(i=0;i<NUM_THREAD;i++)
        CloseHandle(threadArr[i]);
       printf("All done!
");
    system("pause");
}
Kết quả hiển thị ra sẽ là 1 chuỗi các kết quả có dạng na ná kiểu này:
Mã:
Thread ID: 001  -   Thread name: Thread#50   >1
Thread ID: 001  -   Thread name: Thread#50   >2
Thread ID: 002  -   Thread name: Thread#50   >1
Thread ID: 003  -   Thread name: Thread#50   >1
Thread ID: 004  -   Thread name: Thread#50   >1
Tất cả thread name đều có giá trị là Thread#50 (giá trị cuối cùng con trỏ trỏ đến)
Mình muốn hỏi có cách nào để sửa điều này không, hiển thị đúng thread name tương ứng với thread id ấy
Mình cũng có đọc qua về phần đồng bộ rồi nhưng không biết ứng dụng vào đây kiểu gì, mọi người chỉ cho mình với!!! thank u!
(Trình bày hơi tối, nhưng không biết phải nói thế nào, mọi người thông cảm nhé :|)