📄 pcdlg.cpp
字号:
pEmpty->SetWindowText(str3);
//输出full
CEdit *pFull=(CEdit*)(pro.pEdit6);
CString str5;
str5.Format("%d", confull);
pFull->SetWindowText(str5);
Sleep(1500);
ReleaseMutex(g_hMutex);
ReleaseSemaphore(g_hEmptySemaphore,1,NULL);
}
//ReleaseSemaphore(g_hFullSemaphore,1,NULL);
//return(0);
}
UINT WriteE(LPVOID pParam)
{
CPCDlg dlg;
CEdit *pEdit=(CEdit*)(pro.pEdit1);
pEdit->SetWindowText("");
//WaitForSingleObject(semaphoreWrite.m_hObject,INFINITE);
while(1)
{
WaitForSingleObject(g_hFullSemaphore,INFINITE);
WaitForSingleObject(g_hMutex,INFINITE);
g_Array[in]='E';
//输出in
in++;
in=in%10;
CEdit *pSin=(CEdit*)(pro.pEdit2);
CString str2;
str2.Format("%d",in);
pSin->SetWindowText(str2);
proempty--;
confull++;
if(confull>10)
confull=10;
//输出缓冲区的数据
pEdit->SetWindowText( g_Array);
//输出producer
CEdit *pProducer=(CEdit*)(pro.pEdit4);
CString str1;
str1.Format("%c",'E');
pProducer->SetWindowText(str1);
// 输出number
CEdit *pnumber=(CEdit*)(pro.pEdit5);
pnumber->SetWindowText(str1);
//输出empty
CEdit *pEmpty=(CEdit*)(pro.pEdit3);
CString str3;
if(proempty<0)
proempty=0;
str3.Format("%d",proempty);
pEmpty->SetWindowText(str3);
//输出full
CEdit *pFull=(CEdit*)(pro.pEdit6);
CString str5;
str5.Format("%d", confull);
pFull->SetWindowText(str5);
Sleep(1500);
ReleaseMutex(g_hMutex);
ReleaseSemaphore(g_hEmptySemaphore,1,NULL);
}
//ReleaseSemaphore(g_hFullSemaphore,1,NULL);
//return(0);
}
void CPCDlg::OnProduce()
{
// TODO: Add your control notification handler code here
pro.pEdit1=&m_ProNum;
pro.pEdit2=&m_sin;
pro.pEdit3=&m_empty;
pro.pEdit4=&m_producer;
pro.pEdit5=&m_number;
pro.pEdit6=&m_full;
CWinThread *pWriteA=AfxBeginThread(WriteA,
&pro,
THREAD_PRIORITY_NORMAL,
0,
0);
CWinThread *pWriteB=AfxBeginThread(WriteB,
&pro,
THREAD_PRIORITY_NORMAL,
0,
0);
CWinThread *pWriteC=AfxBeginThread(WriteC,
&pro,
THREAD_PRIORITY_NORMAL,
0,
0);
CWinThread *pWriteD=AfxBeginThread(WriteD,
&pro,
THREAD_PRIORITY_NORMAL,
0,
0);
CWinThread *pWriteE=AfxBeginThread(WriteE,
&pro,
THREAD_PRIORITY_NORMAL,
0,
0);
}
//消费者
UINT ReadA(LPVOID pParam)
{
CEdit *pConnum=(CEdit*)(consu.pEdit1);
CEdit *pOut=(CEdit*)(consu.pEdit2);
CEdit *pFull=(CEdit*)(consu.pEdit3);
CEdit *pConsumernum=(CEdit*)(consu.pEdit4);
CEdit *pConsumnum=(CEdit*)(consu.pEdit5);
CEdit *pEmpty=(CEdit*)(consu.pEdit6);
CEdit *ppronum=(CEdit*)(consu.pEdit7);
while(1)
{
WaitForSingleObject(g_hEmptySemaphore,INFINITE);
WaitForSingleObject(g_hMutex,INFINITE);
//输出消费者名
CString str1;
str1.Format("%c", 'a');
pConsumernum->SetWindowText(str1);
//输出消费的数据
CString str;
str.Format("%c", g_Array[out]);
pConnum->SetWindowText(str);
ss.Format("%c",g_Array[out]);
pConsumnum->SetWindowText(ss);
g_Array[out]=' ';
//输出缓冲区的数据
ppronum->SetWindowText(g_Array);
out++;
out=out%10;
confull--;
if(confull<0)
confull=0;
proempty++;
if(proempty>10)
proempty=0;
//输出out指针
CString str2;
str2.Format("%d", out);
pOut->SetWindowText(str2);
//输出sfull
CString str3;
str3.Format("%d", confull);
pFull->SetWindowText(str3);
//输出empty
CString str5;
str5.Format("%d",proempty);
pEmpty->SetWindowText(str5);
Sleep(1500);
ReleaseMutex(g_hMutex);
ReleaseSemaphore(g_hFullSemaphore,1,NULL);
}
}
UINT ReadB(LPVOID pParam)
{
CEdit *pConnum=(CEdit*)(consu.pEdit1);
CEdit *pOut=(CEdit*)(consu.pEdit2);
CEdit *pFull=(CEdit*)(consu.pEdit3);
CEdit *pConsumernum=(CEdit*)(consu.pEdit4);
CEdit *pConsumnum=(CEdit*)(consu.pEdit5);
CEdit *pEmpty=(CEdit*)(consu.pEdit6);
CEdit *ppronum=(CEdit*)(consu.pEdit7);
while(1)
{
WaitForSingleObject(g_hEmptySemaphore,INFINITE);
WaitForSingleObject(g_hMutex,INFINITE);
//输出消费者名
CString str1;
str1.Format("%c", 'b');
pConsumernum->SetWindowText(str1);
//输出消费的数据
CString str;
str.Format("%c", g_Array[out]);
pConnum->SetWindowText(str);
ss.Format("%c",g_Array[out]);
pConsumnum->SetWindowText(ss);
g_Array[out]=' ';
//输出缓冲区的数据
ppronum->SetWindowText(g_Array);
out++;
out=out%10;
confull--;
if(confull<0)
confull=0;
proempty++;
if(proempty>10)
proempty=0;
//输出out指针
CString str2;
str2.Format("%d", out);
pOut->SetWindowText(str2);
//输出sfull
CString str3;
str3.Format("%d", confull);
pFull->SetWindowText(str3);
//输出empty
CString str5;
str5.Format("%d",proempty);
pEmpty->SetWindowText(str5);
Sleep(1500);
ReleaseMutex(g_hMutex);
ReleaseSemaphore(g_hFullSemaphore,1,NULL);
}
}
UINT ReadC(LPVOID pParam)
{
CEdit *pConnum=(CEdit*)(consu.pEdit1);
CEdit *pOut=(CEdit*)(consu.pEdit2);
CEdit *pFull=(CEdit*)(consu.pEdit3);
CEdit *pConsumernum=(CEdit*)(consu.pEdit4);
CEdit *pConsumnum=(CEdit*)(consu.pEdit5);
CEdit *pEmpty=(CEdit*)(consu.pEdit6);
CEdit *ppronum=(CEdit*)(consu.pEdit7);
while(1)
{
WaitForSingleObject(g_hEmptySemaphore,INFINITE);
WaitForSingleObject(g_hMutex,INFINITE);
//输出消费者名
CString str1;
str1.Format("%c", 'c');
pConsumernum->SetWindowText(str1);
//输出消费的数据
CString str;
str.Format("%c", g_Array[out]);
pConnum->SetWindowText(str);
ss.Format("%c",g_Array[out]);
pConsumnum->SetWindowText(ss);
g_Array[out]=' ';
//输出缓冲区的数据
ppronum->SetWindowText(g_Array);
out++;
out=out%10;
confull--;
if(confull<0)
confull=0;
proempty++;
if(proempty>10)
proempty=0;
//输出out指针
CString str2;
str2.Format("%d", out);
pOut->SetWindowText(str2);
//输出sfull
CString str3;
str3.Format("%d", confull);
pFull->SetWindowText(str3);
//输出empty
CString str5;
str5.Format("%d",proempty);
pEmpty->SetWindowText(str5);
Sleep(1500);
ReleaseMutex(g_hMutex);
ReleaseSemaphore(g_hFullSemaphore,1,NULL);
}
}
UINT ReadD(LPVOID pParam)
{
CEdit *pConnum=(CEdit*)(consu.pEdit1);
CEdit *pOut=(CEdit*)(consu.pEdit2);
CEdit *pFull=(CEdit*)(consu.pEdit3);
CEdit *pConsumernum=(CEdit*)(consu.pEdit4);
CEdit *pConsumnum=(CEdit*)(consu.pEdit5);
CEdit *pEmpty=(CEdit*)(consu.pEdit6);
CEdit *ppronum=(CEdit*)(consu.pEdit7);
while(1)
{
WaitForSingleObject(g_hEmptySemaphore,INFINITE);
WaitForSingleObject(g_hMutex,INFINITE);
//输出消费者名
CString str1;
str1.Format("%c", 'd');
pConsumernum->SetWindowText(str1);
//输出消费的数据
CString str;
str.Format("%c", g_Array[out]);
pConnum->SetWindowText(str);
ss.Format("%c",g_Array[out]);
pConsumnum->SetWindowText(ss);
g_Array[out]=' ';
//输出缓冲区的数据
ppronum->SetWindowText(g_Array);
out++;
out=out%10;
confull--;
if(confull<0)
confull=0;
proempty++;
if(proempty>10)
proempty=0;
//输出out指针
CString str2;
str2.Format("%d", out);
pOut->SetWindowText(str2);
//输出sfull
CString str3;
str3.Format("%d", confull);
pFull->SetWindowText(str3);
//输出empty
CString str5;
str5.Format("%d",proempty);
pEmpty->SetWindowText(str5);
Sleep(1500);
ReleaseMutex(g_hMutex);
ReleaseSemaphore(g_hFullSemaphore,1,NULL);
}
}
UINT ReadE(LPVOID pParam)
{
CEdit *pConnum=(CEdit*)(consu.pEdit1);
CEdit *pOut=(CEdit*)(consu.pEdit2);
CEdit *pFull=(CEdit*)(consu.pEdit3);
CEdit *pConsumernum=(CEdit*)(consu.pEdit4);
CEdit *pConsumnum=(CEdit*)(consu.pEdit5);
CEdit *pEmpty=(CEdit*)(consu.pEdit6);
CEdit *ppronum=(CEdit*)(consu.pEdit7);
while(1)
{
WaitForSingleObject(g_hEmptySemaphore,INFINITE);
WaitForSingleObject(g_hMutex,INFINITE);
//输出消费者名
CString str1;
str1.Format("%c", 'e');
pConsumernum->SetWindowText(str1);
//输出消费的数据
CString str;
str.Format("%c", g_Array[out]);
pConnum->SetWindowText(str);
ss.Format("%c",g_Array[out]);
pConsumnum->SetWindowText(ss);
g_Array[out]=' ';
//输出缓冲区的数据
ppronum->SetWindowText(g_Array);
out++;
out=out%10;
confull--;
if(confull<0)
confull=0;
proempty++;
if(proempty>10)
proempty=0;
//输出out指针
CString str2;
str2.Format("%d", out);
pOut->SetWindowText(str2);
//输出sfull
CString str3;
str3.Format("%d", confull);
pFull->SetWindowText(str3);
//输出empty
CString str5;
str5.Format("%d",proempty);
pEmpty->SetWindowText(str5);
Sleep(1500);
ReleaseMutex(g_hMutex);
ReleaseSemaphore(g_hFullSemaphore,1,NULL);
}
}
void CPCDlg::OnConsume()
{
// TODO: Add your control notification handler code here
consu.pEdit1=&m_ConNum;
consu.pEdit2=&m_out;
consu.pEdit3=&m_full;
consu.pEdit4=&m_consumernum;
consu.pEdit5=&m_consumnum;
consu.pEdit6=&m_empty;
consu.pEdit7=&m_ProNum;
CWinThread *pReadA=AfxBeginThread(ReadA,
&consu,
THREAD_PRIORITY_NORMAL,
0,
0);
CWinThread *pReadB=AfxBeginThread(ReadB,
&consu,
THREAD_PRIORITY_NORMAL,
0,
0);
CWinThread *pReadC=AfxBeginThread(ReadC,
&consu,
THREAD_PRIORITY_NORMAL,
0,
0);
CWinThread *pReadD=AfxBeginThread(ReadD,
&consu,
THREAD_PRIORITY_NORMAL,
0,
0);
CWinThread *pReadE=AfxBeginThread(ReadE,
&consu,
THREAD_PRIORITY_NORMAL,
0,
0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -