91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 12KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-06-08
  • 語言: 其他
  • 標(biāo)簽: 多線程??同步讀寫??

資源簡介

使用多線程實現(xiàn)同步讀寫的一個小程序,同時開啟讀線程和寫線程。當(dāng)寫線程寫入一個數(shù)字時,讀線程讀取該數(shù)字。

資源截圖

代碼片段和文件信息

#include??????
#include??????

const?unsigned?short?SIZE_OF_BUFFER?=?10;???//緩沖區(qū)長度?
int?g_buffer[SIZE_OF_BUFFER];??//緩沖區(qū)

unsigned?short?in?=0;
unsigned?short?out?=0;
??
HANDLE?g_hMutex;
HANDLE???g_hFullSemaphore;???????????//當(dāng)緩沖區(qū)滿時迫使生產(chǎn)者等待??
HANDLE???g_hEmptySemaphore;???????????//當(dāng)緩沖區(qū)空時迫使消費(fèi)者等待?

bool?g_continue?=?true;?????????????//控制程序結(jié)束?
int?in_number?=?0;
int?out_number?=0;

DWORD?WINAPI?Write(LPVOID?lpPara);
DWORD?WINAPI?Read(LPVOID?lpPara);

using?namespace?std;

int?main()
{
??//創(chuàng)建互斥信號
??g_hMutex=?CreateMutex(NULLFALSENULL);
?//?g_hFullSemaphore?=?CreateSemaphore(NULLSIZE_OF_BUFFER-1SIZE_OF_BUFFER-1NULL);???
?//?g_hEmptySemaphore?=?CreateSemaphore(NULL0SIZE_OF_BUFFER-1NULL);
??
??const?unsigned?short?WRITE_COUNT?=1;?//寫的個數(shù)
??const?unsigned?short?READ_COUNT??=1;?//讀的個數(shù)

??const?unsigned?short?THREADS_COUNT?=WRITE_COUNT+READ_COUNT;//總線程個數(shù)
??HANDLE?hThreads[THREADS_COUNT];?//線程句柄
??DWORD?Write_Thread_ID[WRITE_COUNT];??//寫線程的標(biāo)識符???
??DWORD?Read_Thread_ID[READ_COUNT];???//讀線程的標(biāo)識符?

??//創(chuàng)建寫線程
??for(int?i=0;i??{
???hThreads[i]=CreateThread(NULL0WriteNULL0&Write_Thread_ID[i]);
??}

??//創(chuàng)建讀線程
??for(int?j=0;j??{
???hThreads[WRITE_COUNT+j]=CreateThread(NULL0ReadNULL0&Read_Thread_ID[i]);
??}

??//回車后終止運(yùn)行
??while(g_continue)
??{
????if(getchar())
{
?g_continue?=false;
}
??}
??return?0;
}

//寫一個字符
void?Write_number()
{
??cout<<“we?write?the?number?is?:?“<??//把字符放入緩沖區(qū)
??g_buffer[in]=in_number;
??in=(in+1)%SIZE_OF_BUFFER;
??in_number++;
}

//讀一個字符
void?Get_number()
{
??out_number?=g_buffer[out];
??out=(out+1)%SIZE_OF_BUFFER;
??cout<<“we??get??the?number?is?:?“<}


//寫線程
DWORD?WINAPI?Write(LPVOID?lpPara)
{
?while(g_continue)
?{
?//?WaitForSingleobject(g_hFullSemaphoreINFINITE);??
??WaitForSingleobject(g_hMutexINFINITE);
??Write_number();
??Sleep(10);
??ReleaseMutex(g_hMutex);
?//?ReleaseSemaphore(g_hEmptySemaphore1NULL);?
?}
?return?0;
}

//讀線程
DWORD?WINAPI?Read(LPVOID?lpPara)
{
?while(g_continue)
?{
?//?WaitForSingleobject(g_hEmptySemaphoreINFINITE);
??WaitForSingleobject(g_hMutexINFINITE);
??Get_number();
??Sleep(10);
??ReleaseMutex(g_hMutex);
?//?ReleaseSemaphore(g_hFullSemaphore1NULL);??
?}
?return?0;
}

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????4326??2009-05-05?17:18??read_write\read_write.dsp

?????文件????????543??2009-05-05?16:29??read_write\read_write.dsw

?????文件??????41984??2009-05-05?21:31??read_write\read_write.ncb

?????文件??????49664??2009-05-05?21:31??read_write\read_write.opt

?????文件???????1265??2009-05-05?21:30??read_write\read_write.plg

?????文件???????2482??2009-05-05?21:30??read_write\test.cpp

?????目錄??????????0??2009-05-05?21:33??read_write

-----------?---------??----------?-----??----

???????????????100264????????????????????7


評論

共有 條評論