資源簡介
代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
using?System.Threading.Tasks;
using?System.Threading;
///生產者-消費者模式:
///1、一個存放任務的隊列;
///2、當有任務需要執行的時候,將它放入到隊列中,所以需要一個將任務放入隊列的方法也同樣需要通知消費者進行消費;
///3、生產者只需要生產,即只負責添加任務,所以添加完任務后,生產者線程是可以不用等待消費者執行完畢的(可以不阻塞);
///4、消費者線程從隊列中獲取任務(獲取的同時移除,因此需要鎖)并執行,所以需要while循環監聽隊列;
///5、在這個例子中,使用AutoResetEvent的優勢在于沒有任務的時候不會消耗CPU,在有任務的時候會立即響應
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\生產者消費者模式.csproj.CoreCompileInputs.cache
?????文件????????469??2019-03-05?20:53??UsingParallel\LLL\obj\Debug\生產者消費者模式.csproj.FileListAbsolute.txt
?????文件???????1755??2019-03-05?20:53??UsingParallel\LLL\obj\Debug\生產者消費者模式.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\生產者消費者模式.csproj
?????文件????????187??2019-03-05?20:53??UsingParallel\MonitorWait和Pulse實現生產者消費者\App.config
?????文件???????7168??2019-03-05?20:53??UsingParallel\MonitorWait和Pulse實現生產者消費者\bin\Debug\MonitorWait和Pulse實現生產者消費者.exe
?????文件????????187??2019-03-05?20:53??UsingParallel\MonitorWait和Pulse實現生產者消費者\bin\Debug\MonitorWait和Pulse實現生產者消費者.exe.config
?????文件??????17920??2019-03-05?20:53??UsingParallel\MonitorWait和Pulse實現生產者消費者\bin\Debug\MonitorWait和Pulse實現生產者消費者.pdb
?????文件??????23168??2019-03-05?20:53??UsingParallel\MonitorWait和Pulse實現生產者消費者\bin\Debug\MonitorWait和Pulse實現生產者消費者.vshost.exe
............此處省略132個文件信息
- 上一篇:C# 串口控制(打開/關閉)
- 下一篇:WPF畫布實現旋轉等待效果
評論
共有 條評論