#define _CRT_RAND_S
#include
#include "semaphore.h"
#include "thread.h"
#include
using namespace std;
Semaphore mutex(1);
unsigned int WINAPI hello(void * param){
unsigned int time = 0;
while(TRUE){
rand_s(&time);
time %= 3000;
mutex.P();
cout << GetCurrentThreadId() << " says hello .Sleep: "<< time << "ms"<<endl;
mutex.V();
Sleep(time);
}
return 0;
}
#define THREAD_COUNT 3
int main(){
HANDLE hThread[THREAD_COUNT];
int i = 0;
for( i = 0; i < THREAD_COUNT; i++){
hThread[i] = startThread(hello,NULL);
}
::WaitForMultipleObjects(THREAD_COUNT,hThread,TRUE,INFINITE);
for( i = 0; i < THREAD_COUNT; i++){
CloseHandle(hThread[i]);
}
return 0;
}
error C2065: 'rand_s' : undeclared identifier
error C2065: '_beginthreadex' : undeclared identifier