C 編寫的多生產者多消費者同步問題

2021-05-02 05:01:58 字數 1942 閱讀 9813

// 多個生產者和多個消費者,能生產n個產品的情況

using system;

using system.threading;

public class holdintegersynchronized

public int buffersize

}public int buffer

--occupiedbuffercount;

buffercopy = buffer[readposition];

readposition = (readposition + 1) % buffer.length;   

displaystate(thread.currentthread.name + " reads " + buffercopy);

// 通知,讓等待的 生產者執行緒 進入started狀態,如果生產者處於臨界區之外,這句話執行完後他仍然在臨界區之外

monitor.pulseall(this);

// 釋放鎖

}//lock

return buffercopy;

}set

buffer[writeposition] = value;

++occupiedbuffercount;

writeposition = (writeposition + 1) % buffer.length;

displaystate(thread.currentthread.name + " writes " + value);

// 通知,讓wait狀態的 消費者 進入started狀態,如果消費者處於臨界區之外,這句話執行完後他仍然在臨界區之外

monitor.pulseall(this);

// 釋放鎖}}

}public void displaystate(string operation)",operation);

for(int i = 0; i < buffersize; i++ )",buffer[i]);

}else if( b < a && !( b <= i && i < a ) )",buffer[i]);

}else if( occupiedbuffercount == buffersize)",buffer[i]);

}else","");}}

console.writeline("/r/n",occupiedbuffercount);}}

class producer

public void produce()

console.writeline(thread.currentthread.name + " done producing./r/nterminating " + thread.currentthread.name + "./r/n");}}

class consumer

public void consume()

console.writeline(thread.currentthread.name + " read values totaling:" + sum + "/r/nterminating " + thread.currentthread.name + ".");} }

class sharedcell","operation");

for(int i = 0;i < holdinteger.buffersize;i++)","elem " + i);

}console.writeline("occupied count/r/n");

for(int i = 0; i < producerthreads.length;i++)

for(int i = 0; i < consumerthreads.length;i++)

for(int i = 0; i < producerthreads.length;i++)

for(int i = 0; i < consumerthreads.length;i++)}}

python queue 多生產者,多消費者

專案需求是從快 爬取ip,運用到專案中,設定佇列的大小,當有ip被消耗時,就新增新的ip到佇列中,獲取ip的頁面是不斷重新整理的。總的來說,就是一方不斷把爬取ip存到佇列中,一方不斷從佇列中取ip,消耗ip,此處爬取的是快 首先建立乙個佇列 from queue import queue q que...

生產消費模型 多生產者vs多消費者

使用場景 遊戲中多個玩家生產任務,伺服器多執行緒處理任務,netty工作執行緒收到客戶端傳來資料,生成任務後,加入到任務佇列中 public abstract class basetask 任務管理器 public class mutitaskmanager private final static...

單生產者 多消費者模型

問題出處 生產者消費者問題 有乙個生產者在生產產品,這些產品將提供給若干個消費者去消費,為了使生產者和消費者能併發執行,在兩者之間設定乙個有多個緩衝區的緩衝池,生產者將它生產的產品放入乙個緩衝區中,消費者可以從緩衝區中取走產品進行消費,所有生產者和消費者都是非同步方式執行的,但它們必須保持同步,即不...