單臨界區管理和多臨界區管理的效率對比

2021-10-05 11:27:14 字數 1174 閱讀 9382

測試**:

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 歡迎來互相交流學習。屬於臨界資源的 硬體 印表機 磁帶機 軟體 訊息佇列 變數 陣列 緩衝區。每個程序訪問臨界資源的那段 稱為臨界區。不論是硬體臨界資源還是軟體臨界資源,多個程序必須互斥地對它進行訪問。保證諸程序互斥地進入臨界區,便可實現...