這裡的**是為了引入乙個問題:執行緒安全
#include#include//執行緒標頭檔案#include//簡單說std::future提供了一種訪問非同步操作結果的機制
#include//數學操作標頭檔案
#include#include//獲取本機器參考執行緒數的標頭檔案
#include//c語言中的stdlib.h在c++被重新命名為cstdlib
#include////c語言中的time.h在c++被重新命名為ctime
using namespace std;
class counter
{} void addcount()
int count() const
private:
int m_count;
};int work(int a)
template void realwork(counter &c, double &totalvalue, iter itbegin,iter itend)
}//併發量
int main()
counter counter;
for (auto v :vec)
cout << "total times" << counter.count() << endl;
counter counter2;
auto iter = vec.begin() + vec.size() / 3;
auto iter2 = vec.begin() + vec.size() / 3 * 2;
thread b([&counter2, &totalvalue, iter, iter2]
); auto vend = vec.end();
thread c([&counter2, &totalvalue, iter2, vend]
); realwork(counter2, totalvalue, vec.begin(), iter);
b.join();
c.join();
cout << "執行緒呼叫的counter2:" << counter2.count() << endl;
}
執行結果如下:
為什麼會少呢?是因為執行緒操作相同的變數++的時候i,++的過程中,無法操作,也就會漏掉本次操作,造成所謂「執行緒安全問題」
Socket Java 多執行緒伺服器(二)
在 一 中實現了單執行緒的客戶 服務端的連線和資料傳送接收 應用多執行緒來實現伺服器和多客戶端之間的通訊 基本步驟 伺服器端建立serversocket,迴圈呼叫accept 等待客戶端連線 客戶端建立乙個socket並請求和伺服器端連線 伺服器端接收客戶端請求,建立socket與該客戶建立專線連線...
多執行緒伺服器
posix執行緒庫 a 與執行緒有關的函式都構成了乙個完整的系列,絕大多數函式的名字都是以 pthread 打頭的。b 要使用這些庫函式,要引入標頭檔案。c 鏈結這些執行緒庫函式時要使用編譯命令的 lpthread 選項。int pthread create pthread t thread,con...
多執行緒時間伺服器
include stdafx.h include include include include include define port 8080 int x 1 void error char str dword winapi new client proc lpvoid lpparam prin...