條件變數condition variable
乙個condition variable總是和乙個mutex搭配使用的。乙個執行緒可以呼叫pthread_cond_wait在乙個condition variable上阻塞等待,這個函式做以下三步操作:
釋放mutex(不滿足條件時必須進行休眠)
進行阻塞式等待(不能抱著鎖資源休眠)
被喚醒時能夠重新獲得mutex資源並等待(能被喚醒)
基於鍊錶的生產者消費者模型
#include
#include
#include
#include
typedef
struct _listnode
node, *plist, **pplist;
plist head = null;
static
pthread_mutex_t lock = pthread_mutex_initializer;
static
pthread_cond_t cond = pthread_cond_initializer;
plist buy_node
(int d)
tmp->next = null;
tmp->_val = d;
return tmp;
}void
init_list
(pplist list)
intis_empty
(plist list)
static
void
free_node
(plist list)
}void
push_front
(plist list, int d)
void
pop_front
(plist list, int *_out)
}void
destroy
(plist list)
free_node(list);
list = null;
}void
display
(plist head)
printf("\n");
}void *custume
() pop_front(head, &data);
//display(head);
printf("custumer custume: %d\n", data);
pthread_mutex_unlock(&lock);
pthread_cond_signal(&cond);
sleep(3);
}}void *product()}
intmain
()
c 中生產者消費者問題
乙個同步程式,生產者向乙個緩衝區 定義為三個位元組 中寫入資料,消費者從中提取數 據,如果緩衝區中沒有資料,那麼consumer只好wait,進入等待狀態,當另乙個執行緒 也就是 生產者 向緩衝區中寫入資料猴,執行了monitor.pulse,喚醒了consumer的等待,開始讀取 資料.反之,當p...
生產者消費者 生產者與消費者模式
一 什麼是生產者與消費者模式 其實生產者與消費者模式就是乙個多執行緒併發協作的模式,在這個模式中呢,一部分執行緒被用於去生產資料,另一部分執行緒去處理資料,於是便有了形象的生產者與消費者了。而為了更好的優化生產者與消費者的關係,便設立乙個緩衝區,也就相當於乙個資料倉儲,當生產者生產資料時鎖住倉庫,不...
執行緒中生產者和消費者
package com.thread.p c public class valueobject package com.thread.p c public class p public void setvalue string value system.currenttimemillis syste...