題目:
四個執行緒 t1,t2,t3,t4,向 4 個檔案中寫入資料, t1 只能寫入 1, t2 只能寫入 2, t3 只能寫
入 3, t4 只能寫入 4,對 4 個檔案 a, b, c, d 寫入如下內容
a:123412341234.....
b:234123412341....
c:341234123412....
d:412341234123....
怎麼實現同步可以讓執行緒並行工作?
用windows c++實現.
//222_thread.cpp : 定義控制台應用程式的入口點。
//#include
"stdafx.h
"#include
#include
#include
using
namespace
std;
handle ghmutex;
handle handles[
4][4
];int idxx = 1
;void
threada()
cout
<< 1
; idxx++;
releasemutex(ghmutex);
} while (idxx < 50
);
}void
threadb()
cout
<< 2
; idxx++;
releasemutex(ghmutex);
} while (idxx < 50);}
void
threadc()
cout
<< 3
; idxx++;
releasemutex(ghmutex);
} while (idxx < 50);}
void
threadd()
cout
<< 4
; idxx++;
releasemutex(ghmutex);
} while (idxx < 50);}
void
writea()
void
writeb()
void
writec()
void
writed()
int _tmain(int argc, _tchar*ar**)
}dword threadid;
createthread(null,
0, (lpthread_start_routine)threada, null, 0, &threadid);
createthread(null,
0, (lpthread_start_routine)threadb, null, 0, &threadid);
createthread(null,
0, (lpthread_start_routine)threadc, null, 0, &threadid);
createthread(null,
0, (lpthread_start_routine)threadd, null, 0, &threadid);
createthread(null,
0, (lpthread_start_routine)writea, null, 0, &threadid);
createthread(null,
0, (lpthread_start_routine)writeb, null, 0, &threadid);
createthread(null,
0, (lpthread_start_routine)writec, null, 0, &threadid);
createthread(null,
0, (lpthread_start_routine)writed, null, 0, &threadid);
ghmutex =createmutex(
null,
//default security attributes
false, //
initially not owned
null); //
unnamed mutex
if (ghmutex ==null)
sleep(
60000
);
return0;
}
個人部落格:
面試題 多執行緒程式設計
題目 四個執行緒 t1,t2,t3,t4,向 4 個檔案中寫入資料,t1 只能寫入 1,t2 只能寫入 2,t3 只能寫 入 3,t4 只能寫入 4,對 4 個檔案 a,b,c,d 寫入如下內容 a 123412341234.b 234123412341.c 341234123412.d 41234...
多執行緒程式設計面試題
衝擊大廠必備 第一種實現方法,使用wait notify方法實現 public static void main string args char arr2 object o newobject new thread catch exception e start new thread catch ...
多執行緒面試題
題目 主線程執行10次,子執行緒執行10次,此過程重複50次 package com.thread.test function 主線程執行10次,子執行緒執行10次,此過程重複50次 public class threadproblem start for int j 0 j 50 j class ...