題目:有四個執行緒1、2、3、4。執行緒1的功能就是輸出1,執行緒2的功能就是輸出2,以此類推.........現在有四個檔案abcd。初始都為空。現要讓四個檔案呈如下格式:
a:1 2 3 4 1 2....
b:2 3 4 1 2 3....
c:3 4 1 2 3 4....
d:4 1 2 3 4 1....
三種鎖策略耗時不同,第二種最快,迴圈兩百萬次耗時在五十多秒(win10+vc2017),第一種是第二種的兩倍耗時
c++11**:
#include #include #include #include #include #include #include #include const int loop = 500000*4;
std::mutex ml;
int flag;
std::condition_variable cond;
std::string filestr[4];
//鎖定在不同寫檔案上,而不是整個寫操作,耗時縮短一倍
std::mapwf,,, };
std::mutex m[4];
/*//鎖定在整個操作期間,每個執行緒依次(flag)排隊等候操作權,規定執行緒執行時只能依次進行
void writetofile(int num)
; int fileid = num;
for (int i = 0; i < loop; i++)
}*/int main(int argc, char *argv)
long end = std::clock();
long time = (end - begin)*1000 / clocks_per_sec;
std::cout << "finished "
return 0;
}
一道筆試題
看到一道筆試題,跟自己想的有點出入,就跑了下,看了看原因。我稍微改了下 include int main int argc,char argv 輸出結果 c 5 d 245 press any key to continue vc6.0 debug下的彙編 5 unsigned char a 0xa...
一道筆試題
上次去筆試的時候,有一道題,怎麼也沒做出來,當時也是很緊張,有些思路,但卻沒有做出來。有四個人要過乙個獨木橋,因為天比較黑,而且橋只能允許兩個人同時通過,並且他們只有乙個手電筒。四個人單獨同時橋的時間是1,2,5,8分鐘。問最短的時間是多少?當時我的答案 1和8,1回來,1 5,1回來,1 2 8 ...
一道筆試題
題目是這樣的 判斷乙個小於1000的正整數是否為素數。素數的定義就不說了,以下直接分析解法,畢竟是在寫與專業相關的東西,是給本專業的人看得,所以看的人應該有點基礎吧?求素數的問題是乙個數學上的難題,這是常識,但是本題目限制了最大範圍是在1000以內,所以就可以嘗試找出乙個足夠好的解了。首先給出乙個最...