資源簡介
代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
using?System.Threading.Tasks;
using?System.Threading;
///生產(chǎn)者-消費(fèi)者模式:
///1、一個存放任務(wù)的隊列;
///2、當(dāng)有任務(wù)需要執(zhí)行的時候,將它放入到隊列中,所以需要一個將任務(wù)放入隊列的方法也同樣需要通知消費(fèi)者進(jìn)行消費(fèi);
///3、生產(chǎn)者只需要生產(chǎn),即只負(fù)責(zé)添加任務(wù),所以添加完任務(wù)后,生產(chǎn)者線程是可以不用等待消費(fèi)者執(zhí)行完畢的(可以不阻塞);
///4、消費(fèi)者線程從隊列中獲取任務(wù)(獲取的同時移除,因此需要鎖)并執(zhí)行,所以需要while循環(huán)監(jiān)聽隊列;
///5、在這個例子中,使用AutoResetEvent的優(yōu)勢在于沒有任務(wù)的時候不會消耗CPU,在有任務(wù)的時候會立即響應(yīng)
namespace?LLL
{
????class?ProducerConsumerQueue?:?IDisposable
????{
????????EventWaitHandle?_wh?=?new?AutoResetEvent(false);
????????Thread?_worker;
????????readonly?object?_locker?=?new?object();
????????Queue?_tasks?=?new?Queue();
????????public?ProducerConsumerQueue()
????????{
????????????_worker?=?new?Thread(Work);
????????????_worker.Start();
????????}
????????public?void?EnqueueTask(string?task)
????????{
????????????lock?(_locker)?_tasks.Enqueue(task);
????????????_wh.Set();
????????}
????????public?void?Dispose()
????????{
???
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????..A..H.????102400??2019-03-11?19:57??UsingParallel\.vs\UsingParallel\v15\.suo
?????文件??????????0??2019-03-05?20:58??UsingParallel\.vs\UsingParallel\v15\Server\sqlite3\db.lock
?????文件?????610304??2019-03-11?19:57??UsingParallel\.vs\UsingParallel\v15\Server\sqlite3\storage.ide
?????文件????????187??2019-03-05?20:53??UsingParallel\LLL\App.config
?????文件???????6144??2019-03-05?20:53??UsingParallel\LLL\bin\Debug\LLL.exe
?????文件????????187??2019-03-05?20:53??UsingParallel\LLL\bin\Debug\LLL.exe.config
?????文件??????17920??2019-03-05?20:53??UsingParallel\LLL\bin\Debug\LLL.pdb
?????文件??????23168??2019-03-05?20:53??UsingParallel\LLL\bin\Debug\LLL.vshost.exe
?????文件????????187??2019-03-05?20:53??UsingParallel\LLL\bin\Debug\LLL.vshost.exe.config
?????文件????????490??2019-03-05?20:53??UsingParallel\LLL\bin\Debug\LLL.vshost.exe.manifest
?????文件???????6586??2019-03-05?20:53??UsingParallel\LLL\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
?????文件????????448??2019-03-05?20:53??UsingParallel\LLL\obj\Debug\LLL.csproj.FileListAbsolute.txt
?????文件???????1755??2019-03-05?20:53??UsingParallel\LLL\obj\Debug\LLL.csprojResolveAssemblyReference.cache
?????文件???????6144??2019-03-05?20:53??UsingParallel\LLL\obj\Debug\LLL.exe
?????文件??????17920??2019-03-05?20:53??UsingParallel\LLL\obj\Debug\LLL.pdb
?????文件??????????0??2019-03-05?20:53??UsingParallel\LLL\obj\Debug\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
?????文件??????????0??2019-03-05?20:53??UsingParallel\LLL\obj\Debug\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
?????文件??????????0??2019-03-05?20:53??UsingParallel\LLL\obj\Debug\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
?????文件?????????42??2019-03-05?20:58??UsingParallel\LLL\obj\Debug\生產(chǎn)者消費(fèi)者模式.csproj.CoreCompileInputs.cache
?????文件????????469??2019-03-05?20:53??UsingParallel\LLL\obj\Debug\生產(chǎn)者消費(fèi)者模式.csproj.FileListAbsolute.txt
?????文件???????1755??2019-03-05?20:53??UsingParallel\LLL\obj\Debug\生產(chǎn)者消費(fèi)者模式.csprojResolveAssemblyReference.cache
?????文件???????2417??2019-03-05?21:05??UsingParallel\LLL\ProducerConsumerQueue.cs
?????文件????????743??2019-03-05?20:53??UsingParallel\LLL\Program.cs
?????文件???????1348??2019-03-05?20:53??UsingParallel\LLL\Properties\AssemblyInfo.cs
?????文件???????2600??2019-03-05?20:53??UsingParallel\LLL\生產(chǎn)者消費(fèi)者模式.csproj
?????文件????????187??2019-03-05?20:53??UsingParallel\MonitorWait和Pulse實現(xiàn)生產(chǎn)者消費(fèi)者\(yùn)App.config
?????文件???????7168??2019-03-05?20:53??UsingParallel\MonitorWait和Pulse實現(xiàn)生產(chǎn)者消費(fèi)者\(yùn)bin\Debug\MonitorWait和Pulse實現(xiàn)生產(chǎn)者消費(fèi)者.exe
?????文件????????187??2019-03-05?20:53??UsingParallel\MonitorWait和Pulse實現(xiàn)生產(chǎn)者消費(fèi)者\(yùn)bin\Debug\MonitorWait和Pulse實現(xiàn)生產(chǎn)者消費(fèi)者.exe.config
?????文件??????17920??2019-03-05?20:53??UsingParallel\MonitorWait和Pulse實現(xiàn)生產(chǎn)者消費(fèi)者\(yùn)bin\Debug\MonitorWait和Pulse實現(xiàn)生產(chǎn)者消費(fèi)者.pdb
?????文件??????23168??2019-03-05?20:53??UsingParallel\MonitorWait和Pulse實現(xiàn)生產(chǎn)者消費(fèi)者\(yùn)bin\Debug\MonitorWait和Pulse實現(xiàn)生產(chǎn)者消費(fèi)者.vshost.exe
............此處省略132個文件信息
評論
共有 條評論