Linux多執行緒通訊

2021-08-10 07:42:36 字數 1082 閱讀 2209

#include #include #define buffer_size 16//緩衝區數量

struct prodcons

;//初始化緩衝區結構

void init(struct prodcons *b)

//生產者將產品放入緩衝區,這裡是存入乙個整數

void put(struct prodcons *b,int data)

//寫資料,並移動指標

b->buffer[b->writepos]=data;

b->writepos++;

if(b->writepos >= buffer_size)

//設定緩衝區非空的條件變數

pthread_cond_signal(&b->notempty);//解除某乙個等待執行緒的阻塞狀態

pthread_mutex_unlock(&b->lock);//給互斥變數解鎖

}//消費者從緩衝區取出整數

int get(struct prodcons *b)

//讀資料,移動讀指標

data = b->buffer[b->readpos];

b->readpos++;

if(b->readpos >= buffer_size)

//設定緩衝區未滿的條件變數

pthread_cond_signal(&b->notfull);

pthread_mutex_unlock(&b->lock);

return data;

}/*測試:生產者執行緒將1到10000的整數送入緩衝區,消費者執行緒從緩衝區中獲取整數,兩者都列印資訊*/

#define over (-1)

struct prodcons buffer;

void *producer(void *data)

put(&buffer,over);

return null;

}void *consumer(void *data)

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

} return null;

}int main(void)

Linux 多執行緒通訊

2008 03 13 11 01 19764人閱讀 收藏舉報 linux 多執行緒thread join windows 程式設計摘自資料 linux 與windows不同 使用多執行緒的理由之一是和程序相比,它是一種非常 節儉 的多工操作方式。我們知道,在linux系統下,啟動乙個新的程序必須分配...

執行緒通訊,多執行緒

多執行緒 thread handler thread處理一些複雜的業務邏輯 耗時的事情 handler在主線程中接收訊息的乙個物件 mhandler.sendmessage msg 傳送乙個訊息物件 mhandler.sendemptymessage what 傳送空訊息,只有what沒有obj m...

多執行緒 執行緒通訊

總結 今天小鹹兒來講解乙個好玩的事,那就是執行緒之間該如何通訊,執行緒通訊之後又會出現什麼問題?先來一張導圖來看看執行緒通訊的分布?疑問 如果想要執行緒按照使用者自定義的順序執行的話,那該如何操作呢?思考 如果能夠讓執行緒等待先執行的執行緒執行完,再執行不就能達到效果了嗎!果然出現問題之後,就會有對...