?? 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 + -