#包含“time.h”
#包含“conio.h”
#包括“iostream”
使用命名空間std
Class block //自定義壹個簡單的信號量類,防止數組* * *共享沖突。
{
公共:
block():m _ bBlocked(false){ };
void SetBlock()//
{
while(m _ bBlocked);
m _ bBlocked = true
};
無效復位()
{
m _ bBlocked = false
};
私人:
bool m _ bBlocked
};
const int N = 10;//可以自己定義數組大小。
const char * path = " d:\ \ test . txt ";
bool stop = false//線程控制數量
bool haveContent = false//數組是否有內容,即生產者是否生產新產品?
block blk//* * *享受旗語
int random[N];
void producer(void * = NULL);//生產者線程
void客戶(void * = NULL);//消費者線程
無效睡眠(int);//間隔時間,否則系統會忙死。
int main()
{
_beginthread(生產者,0,NULL);
_beginthread(客戶,0,NULL);
而(!getch());
stop = true
返回0;
}
void生產者(void * /* = NULL */)
{
srand((無符號)時間(空));
而(!停止)
{
如果(有內容)
繼續;
布洛克。SetBlock();
for(int I = 0;我& ltn;i++)
random[I]= rand();
haveContent = true
睡眠(1000);
布洛克。reset();
}
}
作廢客戶(void * /* = NULL */)
{
而(!停止)
{
int a[N];
如果(!有內容)
繼續;
布洛克。SetBlock();
for(int I = 0;我& ltn;i++)
{
printf("%-7d ",random[I]);
a[I]= random[I];
}
cout & lt& ltendl
haveContent = false
布洛克。reset();
FILE * pFile
pFile = fopen(路徑,“a+”);
for(int j = 0;j & ltn;j++)
fprintf(pFile," %-7d ",a[j]);
fprintf(pFile," \ n ");
fclose(pFile);
}
}
無效睡眠(間歇時間)
{
for(int I = 0;我& lt時間* 10;i++)
for(int j = 0;j & lt50000;j++);
}
//以上是在VC6.0環境下寫的,通過測試。
//我想妳應該知道編譯多線程程序時的系統參數設置。