Linux 線程 pthread

來源:互聯網
上載者:User

一個Linux pthread 小例子:

#include <unistd.h>#include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <fcntl.h>#include <string.h>int count = 0;void* pthread_fun(void* ptr){    count++;    sleep(1);    printf("count: %d\n", count);    return ptr;}int main(int argc, char* argv[]){    int num = 20;    int i = 0;    int ret = 0;    void* pt_ret[64];    pthread_t pt_id[64];    for(i=0; i<=num; i++)    {        ret = pthread_create(&pt_id[i], NULL, pthread_fun, NULL);        if(ret != 0)        {            perror("pthread_create failed");        }    }    for(i=0; i<=num; i++)    {        ret = pthread_join(pt_id[i], &pt_ret[i]);        if(ret != 0)        {            perror("pthread_join failed");        }    }    return 0;}

編譯運行:

gcc -o test -lpthread test.c./test

It seems OK  !

但是改成這樣後,就有問題了:

#include <unistd.h>#include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <fcntl.h>#include <string.h>void* pthread_fun(void* ptr){    int count = *ptr;    printf("count: %d\n", count);    sleep(1);    return ptr;}int main(int argc, char* argv[]){    int num = 20;    int i = 0;    int ret = 0;    void* pt_ret[64];    pthread_t pt_id[64];    for(i=0; i<=num; i++)    {        ret = pthread_create(&pt_id[i], NULL, pthread_fun, &i);        if(ret != 0)        {            perror("pthread_create failed");        }    }    for(i=0; i<=num; i++)    {        ret = pthread_join(pt_id[i], &pt_ret[i]);        if(ret != 0)        {            perror("pthread_join failed");        }    }    return 0;}

編譯錯誤:

# gcc -o test -lpthread test.c tmp.c: In function ‘pthread_fun’:tmp.c:10: warning: dereferencing ‘void *’ pointertmp.c:10: error: void value not ignored as it ought to be

錯誤原因排查中... ...

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.