免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

linux編譯多線程命令 linux多線程程序設(shè)計(jì)

Linux多線程編程

程序代碼test.c共兩個(gè)線程,一個(gè)主線程,一個(gè)讀緩存區(qū)的線程賣腔:

創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的五華網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

#include pthread.h

#include stdio.h

#include stdlib.h

#include string.h

#include unistd.h

char globe_buffer[100];

void *read_buffer_thread(void *arg); //這里先聲明一下讀緩存的線中拆衫程,具體實(shí)現(xiàn)寫在后面了

int main()

{

int res,i;

pthread_t read_thread;

for(i=0;i20;i++)

globe_buffer[i]=i;

printf("\nTest thread : write buffer finish\n");

sleep(3);\\這里的3秒是多余,可以不要。

res = pthread_create(read_thread, NULL, read_buffer_thread, NULL);

if (res != 0)

{

printf("Read Thread creat Error!");

exit(0);

}

sleep(1);

printf("waiting for read thread to finish...\n");

res = pthread_join(read_thread, NULL);

if (res != 0)

{

printf("read thread join failed!\n");

exit(0);

}

printf("read thread test OK, have fun!! exit ByeBye\n");

return 0;

}

void *read_buffer_thread(void *arg)

{

int i,x;

printf("Read buffer thread read data : \n");

for(i=0;i20;i++)

{

x=globe_buffer[i];

printf("%d ",x);

globe_buffer[i]=0;//清空

}

printf("\nread over\n");

}

---------------------------------------------------------------------------------

以上程御畢序編譯:

gcc -D_REENTRANT test.c -o test.o –lpthread

運(yùn)行這個(gè)程序:

$ ./test.o:

關(guān)于linux下多線程編程

pthread_join 線程停止等待函數(shù)沒有調(diào)用

pthread_create 線程生成后,沒有等子線程停止,敗信主線程就先停止了。

主線程停止悉桐后,整個(gè)程序停止,子線程在沒有printf的時(shí)候就被結(jié)束了。

結(jié)論:不是你沒有看到結(jié)果,而是在子線程printf("..................\n");之前整個(gè)程序就已經(jīng)停止了。

#include stdio.h

#include stdlib.h察陸輪

#include sys/types.h

#include string.h

#include unistd.h

#include pthread.h

#define FALSE -1

#define TRUE 0

void *shuchu( void *dumy )

{

int j;

printf("..................\n");

}

int main()

{

int i = 0;

int rc = 0;

int ret1;

pthread_t p_thread1;

if(0!=(ret1 = pthread_create(p_thread1, NULL, shuchu, NULL)))printf("sfdfsdfi\n");

printf("[%d]\n",p_thread1);

pthread_join(p_thread1, NULL);

return TRUE;

}

LINUX下多線程編譯問題

你編余李譯的時(shí)候有加多線程連接選項(xiàng)嗎? 要加廳毀慧上 -lpthread 或者 -pthread (盡量選后者)

例如 gcc -pthread -o test main.cpp

另外你的線程創(chuàng)建的不對(duì),函扮答數(shù)指針不能強(qiáng)轉(zhuǎn)類型(這里也不用轉(zhuǎn))

pthread_create(producter_t,NULL,(void*)producter_f,NULL);

pthread_create(consumer_t,NULL,(void*)consumer_f,NULL);

應(yīng)該是

pthread_create(producter_t,NULL,producter_f,NULL);

pthread_create(consumer_t,NULL,consumer_f,NULL);

linux下c、c++下多線程編譯?

C語言要求除main函數(shù)外 所有的函數(shù)必須先聲明才能使用 你可以在函數(shù)定義的時(shí)候一起聲明這個(gè)函數(shù) 但是在這個(gè)函數(shù)定義之前不能使用這個(gè)函瞎沒數(shù)

下面用通俗點(diǎn)的語言講: 你在main函數(shù)中調(diào)用了thread函數(shù), 但是如果你把void *thread(void *vargp);刪掉了, 那么編譯器就找不到這個(gè)函數(shù)了(因?yàn)榫幾g器是從前往后編譯這個(gè)程序的) 因此編譯器是通不過的

有兩種方法, 一種就是像你之前寫的 先聲明這個(gè)函數(shù) 第二種是把void *thread(void *vargp){...}放到main函數(shù)的前面.

有些返回值和參數(shù)類磨乎納型為int型的函數(shù)頃嫌也可以不用聲明, 編譯器也能通過, 不過這是不建議的 也是不符合標(biāo)準(zhǔn)的

標(biāo)準(zhǔn)建議每個(gè)函數(shù)都應(yīng)該給出它們的顯式的聲明

希望你懂了 嘿嘿

當(dāng)前名稱:linux編譯多線程命令 linux多線程程序設(shè)計(jì)
瀏覽路徑:http://m.newbst.com/article12/ddpopgc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)網(wǎng)站導(dǎo)航網(wǎng)站收錄手機(jī)網(wǎng)站建設(shè)網(wǎng)站設(shè)計(jì)面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)