队列2
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
#include <Windows.h>#include <iostream>#include <queue>#include <stdio.h>using namespace std;DWORD WINAPI Receive(LPVOID lpParameter);//thread dataDWORD WINAPI Write(LPVOID lpParameter);//thread dataCRITICAL_SECTION g_cs;std::queue<int> i_queue;//编号std::queue<void *> p_queue;//数据FILE * pf=NULL;void WriteData(void * pData)//把数据写入到硬盘{ pf=fopen("d:\\result.txt","at"); int mm=fwrite(pData,sizeof(char),strlen((char *)pData),pf); fflush(pf);}void main(){ HANDLE hThread1,hThread2; hThread1 = CreateThread(NULL,0,Receive,NULL,0,NULL); hThread2 = CreateThread(NULL,0,Write,NULL,0,NULL); /*CloseHandle( hThread1 ); CloseHandle( hThread2 );*/ //InitializeCriticalSection(&g_cs); // Sleep(2000); while (i_queue.size()>0) { Sleep(100); } Sleep(2000); fclose(pf); //DeleteCriticalSection(&g_cs);}int i=0;//线程1的入口函数DWORD WINAPI Receive(LPVOID lpParameter){ while (i<10)//运行10次就结束 { //EnterCriticalSection(&g_cs);// i_queue.push(i); void * data=fopen("d:\\test.txt","at"); p_queue.push(data); std::cout <<"接收线程:入队的与元素为 "<<i<<endl; if (i_queue.empty()) { std::cout << "接收线程:队列为空" << endl; } else { std::cout << "接收线程: 队列元素个数" << i_queue.size() << endl; } i++; //LeaveCriticalSection(&g_cs); Sleep(500); } return 0;}//线程2的入口函数DWORD WINAPI Write(LPVOID lpParameter)//thread data{ while (true) { //EnterCriticalSection(&g_cs); if (i_queue.empty()) { std::cout << "IO线程:队列为空" << endl; } else { int aa=i_queue.front(); int count=i_queue.front(); void * newData=p_queue.front(); std::cout << "IO线程:出队的数据"<<count<< endl; std::cout << "IO线程: 队列元素个数" << i_queue.size() <<endl; WriteData(newData); p_queue.pop(); i_queue.pop(); } //LeaveCriticalSection(&g_cs); Sleep(1300); } return 0; |
浙公网安备 33010602011771号