c 11 寫者優先

2021-10-08 16:05:37 字數 1073 閱讀 8462

#include#include#include#include#includeusing namespace std;

class semaphere

semaphere(const semaphere& s)=delete;

semaphere & operator=(const semaphere& s)=delete;

void wait());

m_count--;

} void signal()

m_cv.notify_one();

} private:

mutex m_mtx;

condition_variable m_cv;

int m_count;

}; //讀者優先

semaphere mtx1(1),mtx2(1),mtx3(1),r(1),w(1);

//mtx1 用於控制 reader_count

//mtx2 用於控制 write_count

//mtx3 用於實現讀者併發

//r 用於控制讀者執行緒

//w 用於控制寫者執行緒

//我也不知道這麼理解有沒有問題

int reader_count=0;

int write_count=0;

string read_context="hello world";

int w_times=0;

void reader()

void write_first()

mtx2.signal();

w.wait();

this_thread::sleep_for(chrono::milliseconds(1000));

read_context="hello world"+to_string(++w_times);

w.signal();

mtx2.wait();

write_count--;

if(write_count==0)

mtx2.signal();

} int main()

c 11實現寫優先的讀寫鎖

文章 先直接貼出 ifndef write first rw lock h define write first rw lock h include include class wfirstrwlock read cnt void lock write inwriteflag true void r...

C 11實現觀察者模式

c 11中的std function可以接受函式指標 std bind lambda表示式等函式,可以達到很鬆的耦合,簡直就是為事件機制設計的。但是不能簡單判斷兩個std function是不是同一函式,所以下面我用id來標識listener 我模仿c 的委託實現了觀察者模式 pragma once...

讀者寫者問題的寫者優先演算法

演算法如下 有讀者 reader 和寫者 writer 兩組併發程序,共享乙個檔案,當兩個或以上的讀程序同時訪問共享資料時不會產生 但若某個寫程序和其他程序 讀程序或寫程序 同時訪問共享資料時則可能導致資料不一致的錯誤。因此要求 允許多個讀程序可以同時對檔案執行讀操作 只允許乙個寫程序往檔案中寫資訊...