欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

c語(yǔ)言取消線程例程函數(shù) c語(yǔ)言關(guān)閉程序代碼

C語(yǔ)言如何終止線程?

面只有兩個(gè)線程,是生產(chǎn)者/消費(fèi)者模式,已編譯通過,注釋很詳細(xì)。

10多年的貴溪網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整貴溪建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“貴溪網(wǎng)站設(shè)計(jì)”,“貴溪網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

/* 以生產(chǎn)者和消費(fèi)者模型問題來(lái)闡述Linux線程的控制和通信你

生產(chǎn)者線程將生產(chǎn)的產(chǎn)品送入緩沖區(qū),消費(fèi)者線程則從中取出產(chǎn)品。

緩沖區(qū)有N個(gè),是一個(gè)環(huán)形的緩沖池。

*/

#include stdio.h

#include pthread.h

#define BUFFER_SIZE 16

struct prodcons

{

int buffer[BUFFER_SIZE];/*實(shí)際存放數(shù)據(jù)的數(shù)組*/

pthread_mutex_t lock;/*互斥體lock,用于對(duì)緩沖區(qū)的互斥操作*/

int readpos,writepos; /*讀寫指針*/

pthread_cond_t notempty;/*緩沖區(qū)非空的條件變量*/

pthread_cond_t notfull;/*緩沖區(qū)未滿 的條件變量*/

};

/*初始化緩沖區(qū)*/

void pthread_init( struct prodcons *p)

{

pthread_mutex_init(p-lock,NULL);

pthread_cond_init(p-notempty,NULL);

pthread_cond_init(p-notfull,NULL);

p-readpos = 0;

p-writepos = 0;

}

/*將產(chǎn)品放入緩沖區(qū),這里是存入一個(gè)整數(shù)*/

void put(struct prodcons *p,int data)

{

pthread_mutex_lock(p-lock);

/*等待緩沖區(qū)未滿*/

if((p-writepos +1)%BUFFER_SIZE ==p-readpos)

{

pthread_cond_wait(p-notfull,p-lock);

}

p-buffer[p-writepos] =data;

p-writepos++;

if(p-writepos = BUFFER_SIZE)

p-writepos = 0;

pthread_cond_signal(p-notempty);

pthread_mutex_unlock(p-lock);

}

/*從緩沖區(qū)取出整數(shù)*/

int get(struct prodcons *p)

{

int data;

pthread_mutex_lock(p-lock);

/*等待緩沖區(qū)非空*/

if(p-writepos == p-readpos)

{

pthread_cond_wait(p-notempty ,p-lock);//非空就設(shè)置條件變量notempty

}

/*讀書據(jù),移動(dòng)讀指針*/

data = p-buffer[p-readpos];

p-readpos++;

if(p-readpos == BUFFER_SIZE)

p-readpos = 0;

/*設(shè)置緩沖區(qū)未滿的條件變量*/

pthread_cond_signal(p-notfull);

pthread_mutex_unlock(p-lock);

return data;

}

/*測(cè)試:生產(chǎn)站線程將1 到1000的整數(shù)送入緩沖區(qū),消費(fèi)者線程從緩沖區(qū)中獲取整數(shù),兩者都打印信息*/

#define OVER (-1)

struct prodcons buffer;

void *producer(void *data)

{

int n;

for( n=0;n1000;n++)

{

printf("%d ------\n",n);

put(buffer,n);

}

put(buffer,OVER);

return NULL;

}

void *consumer(void *data)

{

int d;

while(1)

{

d = get(buffer);

if(d == OVER)

break;

else

printf("-----%d\n",d);

}

return NULL;

}

int main()

{

pthread_t th_p,th_c;

void *retval;

pthread_init(buffer);

pthread_create(th_p,NULL,producer,0);

pthread_create(th_c,NULL,consumer,0);

/*等待兩個(gè)線程結(jié)束*/

pthread_join(th_p, retval);

pthread_join(th_c,retval);

return 0;

}

C語(yǔ)言如何讓結(jié)束指定進(jìn)程中的指定線程

終止線程有三種方法:

1.線程可以在自身內(nèi)部調(diào)用AfxEndThread()來(lái)終止自身的運(yùn)行

2.可以在線程的外部調(diào)用BOOL TerminateThread( HANDLE hThread, DWORD dwExitCode )來(lái)強(qiáng)行終止一個(gè)線程的運(yùn)行,

然后調(diào)用CloseHandle()函數(shù)釋放線程所占用的堆棧

3.第三種方法是改變?nèi)肿兞浚咕€程的執(zhí)行函數(shù)返回,則該線程終止。

unsigned long __cdecl _beginthread (void (__cdecl *) (void *),

unsigned, void *); PS--這是我復(fù)制的別人的

C語(yǔ)言 殺死線程 Api函數(shù)

GetExitCodeThread函數(shù)可以得到線程終結(jié)時(shí)的返回值,因?yàn)榫€程終結(jié)了,所以系統(tǒng)中不再有這個(gè)線程,hThreadRcvData本身已經(jīng)無(wú)效,所以調(diào)用TerminateThread函數(shù)會(huì)失敗。

網(wǎng)站欄目:c語(yǔ)言取消線程例程函數(shù) c語(yǔ)言關(guān)閉程序代碼
網(wǎng)站鏈接:http://www.chinadenli.net/article6/dddjeig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航服務(wù)器托管網(wǎng)站建設(shè)ChatGPT標(biāo)簽優(yōu)化用戶體驗(yàn)

廣告

聲明:本網(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í)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司