當前位置:編程學習大全網 - 編程語言 - 塊編程

塊編程

#包含“process.h”

#包含“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環境下寫的,通過測試。

//我想妳應該知道編譯多線程程序時的系統參數設置。

  • 上一篇:請教SCI中接收FIFO的問題
  • 下一篇:什麽是智能網關?
  • copyright 2024編程學習大全網