std::cerr
<<
"Succeed"
<<
std::endl;
//输出缓冲区当前的状态
for
(int
std::cout
if
if
std::cout
(i==in)
(i==out)
<<
std::cout
std::cout
std::endl;
i
i=0;i
Append();
Sleep(1500);
ReleaseMutex(g_hMutex);
ReleaseSemaphore(g_hEmptySemaphore,1,NULL);
}
return
}
0;
//消费者
DWORD
{
WINAPI
Consumer(LPVOID
lpPara)
while(g_continue){
WaitForSingleObject(g_hEmptySemaphore,INFINITE);
WaitForSingleObject(g_hMutex,INFINITE);
Take();
Consume();
Sleep(1500);
ReleaseMutex(g_hMutex);
ReleaseSemaphore(g_hFullSemaphore,1,NULL);
}
return
}
0;
2.
#includewindows.h
#includeiostream.h
#includestdio.h
HANDLE hMutex;
HANDLE hFull, hEmpty; HANDLE p,c;
DWORD WINAPI Producer(LPVOID);
DWORD WINAPI Consumer(LPVOID);
int a[100],i,j;
void main()
{
cout 生产者消费者问题 endl;
a[100]=i=j=0;
hMutex=CreateMutex(NULL,FALSE,NULL);
hFull=CreateSemaphore(NULL,0,1,NULL);
hEmpty=CreateSemaphore(NULL,1,1,NULL);
p=CreateThread(NULL,0,Producer,NULL,0,NULL);
c=CreateThread(NULL,0,Consumer,NULL,0,NULL);
Sleep(150000);
}
void Produce(){
cout<<生产者生产产品<
3.
#include
#include
#include
#include
using
namespace
std;
#define MAX_SIZE
200
char
int
int
int
int
buffer[MAX_SIZE];
in=0;
out=0;
counter=0;
inUse=0;
DWORD WINAPI
Producer(LPVOID);
DWORD WINAPI Consumer(LPVOID);
int main()
{
HANDLE
DWORD ThreadId;
hTrd;
hTrd=CreateThread(NULL,0,Producer,(LPVOID)('A'),0,&TreadId);
if(hTrd)
{
cout
<<
"thread
function
"
<<
'a'
<<"
Lunched"<buffer[in++]=(char)m;
in%=MAX_SIZE;
cout
"in"
inUse=1;//(1)
<<
<<
(char)m <<
endl;
}
//(1)
}
}
DWORD WINAPI
{
Producer(LPVOID m)
char m;
while(1)
{
if(inUse==1)
{
m=buffer[out++];
out%=MAX_SIZE;
cout
<<
<<
in
out
<<
counter
<<
inUse
<<
endl
;
}
}
inUse=0;//(2)
}
//(2)