C 11多執行緒學習 共享資源鎖

2021-10-14 11:25:15 字數 946 閱讀 8291

#include // thread

#include // list

#include // mutex

#include // find

#include // printf

using namespace std;

listsome_list;

mutex some_mutex;

void add_to_list(int new_value)

bool list_contains(int value_to_find)

int main(void)

thread t1 = thread(add_to_list, 11); // 1.使用執行緒函式add_to_list啟動執行緒

thread t2 = thread(list_contains, 11); // 4.使用執行緒函式list_contains啟動執行緒

t1.join();

t2.join();

return 0;

}

讀多改少的場景,可以使用share_mutex(c++17 或者boost庫)

#include #include #include // c++17

class dns_entry {};

class dns_cache

void update_or_add_entry_1(std::string const& domain,

dns_entry const& dns_details)

// 只能退出函式後自動解鎖

void update_or_add_entry_2(std::string const& domain,

dns_entry const& dns_details)

// 可以退出函式後自動解鎖

};

多執行緒共享資源案例

最近研究了一下多執行緒,主要針對於多執行緒共享同一資源,和多執行緒執行各自的資源 其實主要要就是搞清楚資源的含義 你要操作什麼,什麼就是執行緒的資源!1.先說一下多執行緒執行各自的資源 執行各自的資源從字面意思就可以看出來執行緒執行的資源互不干涉,各自執行各自的。案例如下 package testt...

c 多執行緒鎖(c 11)

mutex屬於sleep waiting型別的鎖。例如在乙個雙核的機器上有兩個執行緒 執行緒a和執行緒b 它們分別執行在core0和core1上。假設執行緒a想要通過pthread mutex lock操作去得到乙個臨界區的鎖,而此時這個鎖正被執行緒b所持有,那麼執行緒a就會被阻塞,core0會在此...

C 11 多執行緒與鎖

多執行緒是小型軟體開發必然的趨勢。c 11將多執行緒相關操作全部整合到標準庫中了,省去了某些坑庫的編譯,真是大大的方便了軟體開發。多執行緒這個庫簡單方便實用,下面給出簡單的例子 include include include using namespace std volatile int val ...