pv 生產者和消費者

2021-05-25 18:47:05 字數 1175 閱讀 5447

#include

#include

#include

#include

#define buffer_size 8

struct products

;int bufferisfull(struct products * products)

return (0);

}int bufferisempty(struct products* products)

return (0);

}void produce(struct products* products, int item)

products->buffer[products->poswriteto] = item;

products->poswriteto++;

if (products->poswriteto >= buffer_size)

products->poswriteto = 0;

pthread_cond_signal(&products->notempty);

pthread_mutex_unlock(&products->locker);

}int consume(struct products* products)

item = products->buffer[products->posreadfrom];

products->posreadfrom++;

if (products->posreadfrom >= buffer_size)

products->posreadfrom = 0;

pthread_cond_signal(&products->notfull);

pthread_mutex_unlock(&products->locker);

return item;

}#define end_flag (-1)

struct products products;

void* producerthread(void* data)

produce(&products, end_flag);

return null;

}void* consumerthread(void* data)

return (null);

}int main(int argc, char* argv)

PV操作系列 生產者 消費者

假設 生產者 程序不斷向共享緩衝區寫人資料 即生產資料 而 消費者 程序不斷從共享緩衝區讀出資料 即消費資料 共享緩衝區共有n個 任何時刻只能有乙個程序可對共享緩衝區 臨界區 進行操作。所有生產者和消費者之間要協調,以完成對共享緩衝區的操作。共享緩衝區的大小in,out 0.k 1 in記錄第乙個空...

生產者消費者 生產者與消費者模式

一 什麼是生產者與消費者模式 其實生產者與消費者模式就是乙個多執行緒併發協作的模式,在這個模式中呢,一部分執行緒被用於去生產資料,另一部分執行緒去處理資料,於是便有了形象的生產者與消費者了。而為了更好的優化生產者與消費者的關係,便設立乙個緩衝區,也就相當於乙個資料倉儲,當生產者生產資料時鎖住倉庫,不...

生產者和消費者

package demo.one public class producerconsumerdemo 資源 class resource catch interruptedexception e this.name name count system.out.println thread.curre...