一道google筆試題

2021-08-28 15:48:46 字數 951 閱讀 7816

題目:有四個執行緒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以內,所以就可以嘗試找出乙個足夠好的解了。首先給出乙個最...