我正在嘗試做緩衝區全模擬。當我的緩衝區滿了,我需要複製它進行進一步處理,複製是一個互斥的操作,但進一步處理不是。 我的操作流程就是這樣,我每次檢查緩衝區滿條件時,如果條件爲真,我要寫一些東西。我複製當前緩衝區&進程&然後編寫新的消息。有沒有辦法去QUEUE線程?
我有多個寫入線程&消息應該只按順序寫入。 我在短暫的職責是遵循
bwrite(data)
{
lock(m1);
//invoke copy thread
lock(m1);
// Do write message
}
copy(data)
{
//copy the data
unlock(m1);
//Do further processing
}
的問題是,一旦複製完成後,消息被寫入以任意順序一樣,例如,如果thread01
,& thread02
有沒有&如果thread01
拷貝第一,我不可以控制thread02
可能在thread01
寫入其最後一條消息之前開始複製的事實,因此可能會丟失消息。
它是一個很長的問題,基本上我需要一種方法將傳入的線程放入隊列中,以便我可以保證下一個執行順序。
我正在使用互斥體,我不需要多個複製線程,我只需要有一個複製線程。我將不時發出信號。 – vindyz