程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 輸出結果-新手:thread_create()線程創建和輸出的問題

輸出結果-新手:thread_create()線程創建和輸出的問題

編輯:編程綜合問答
新手:thread_create()線程創建和輸出的問題

#include
#include
#include
#include

#define NUM_THREADS 8

void PrintHello(void *args)
{
int thread_arg;
sleep(1);
thread_arg = (int)(
((int*)args));
printf("Hello from thread %d\n", thread_arg);
return NULL;
}

int main(void)
{
int rc,t;
pthread_t thread[NUM_THREADS];

for( t = 0; t < NUM_THREADS; t++)
{
    printf("Creating thread %d\n", t);
    rc = pthread_create(&thread[t], NULL, PrintHello, &t);
    if (rc)
    {
        printf("ERROR; return code is %d\n", rc);
        return EXIT_FAILURE;
    }
}
sleep(5);
for( t = 0; t < NUM_THREADS; t++)
    pthread_join(thread[t], NULL);
return EXIT_SUCCESS;

}

Creating thread 0
Creating thread 1
Creating thread 2
Creating thread 3
Creating thread 4
Creating thread 5
Creating thread 6
Creating thread 7
Hello from thread 8
Hello from thread 8
Hello from thread 8
Hello from thread 8
Hello from thread 8
Hello from thread 8
Hello from thread 8
Hello from thread 8

這個輸出結果搞不明白,不是應該是下面這樣嗎
Creating thread 0
Creating thread 1
Creating thread 2
Creating thread 3
Creating thread 4
Creating thread 5
Creating thread 6
Creating thread 7
Hello from thread 0
Hello from thread 1
Hello from thread 2
Hello from thread 3
Hello from thread 4
Hello from thread 5
Hello from thread 6
Hello from thread 7

搞不懂為什麼。。。

最佳回答:


剛剛我自己本地測試了一下。
sleep(1);
thread_arg = (int)(((int*)args));
改為
int thread_arg = -1;
thread_arg = *(int *)arg;
sleep(1);
可以滿足你的需求

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved