測試**:
struct test1
~test1()
void add()
void sub()
};struct test2
~test2()
void add()
void sub()
};int main()
auto _thread_pool = &thread_pool::instance();
auto start_time = timer->get_ms();
std::atomiccomplete_num(0);
for (int i = 0; i < 5; ++i)
if (++complete_num == 10) });
} for (int i = 0; i < 5; ++i)
if (++complete_num == 10) });
} //critical_section _critical; //臨界區
初始化臨界區
//initializecriticalsection(&_critical);
//for (int i = 0; i < 5; ++i)
// if (++complete_num == 10)
// }
// );
//}//for (int i = 0; i < 5; ++i)
// if (++complete_num == 10)
// }
// );
//}}
裡面有我改寫的網路上的執行緒池和一些其他的類,所以在各位的電腦上直接執行不了,如果想執行可以自己改一下。
單臨界區:
多臨界區:
耗時:
平均值相差5-6倍, 大家可以不用在意多個臨界區的開銷問題, 可以使用物件池解決開銷問題
臨界區管理
併發程序中與共享變數有關的程式段成為臨界區,共享變數代表的資源成為臨界資源。該演算法為每個程序設定乙個標誌,當該標誌為true時表示此程序要進入臨界區另外設定乙個指示器turn,一直是哪個程序可以進入臨界區 boolean flag 2 int turn void procedure0 visit ...
臨界資源和臨界區
臨界資源 臨界資源是一次僅允許乙個程序使用的共享資源,各程序採取互斥的方式實現共享的資源。屬於臨界資源的硬體有,印表機,磁帶機等 軟體有訊息佇列,變數,陣列,緩衝區等。諸程序間採取互斥方式,實現對這種資源的共享。臨界區 每個程序中訪問臨界資源的那段 稱為臨界區 criticalsection 每次只...
臨界資源和臨界區
個人部落格 the blog of waiterxiaoyy 歡迎來互相交流學習。屬於臨界資源的 硬體 印表機 磁帶機 軟體 訊息佇列 變數 陣列 緩衝區。每個程序訪問臨界資源的那段 稱為臨界區。不論是硬體臨界資源還是軟體臨界資源,多個程序必須互斥地對它進行訪問。保證諸程序互斥地進入臨界區,便可實現...