Om *_*ane 4 .net c# io multithreading threadpool
我有一个执行长时间运行 I/O 的外部库。我希望创建一个多线程应用程序,该应用程序将使用 ThreadPool 来限制并发线程数,并且我希望添加处理这些外部调用的线程作为完成端口线程(I/O 线程)而不是工作线程(以便限制计算绑定线程)完好无损。
我有一个代码示例,它省略了外部库,但显示了我已经尝试过的内容。
有谁知道这是怎么做到的吗?或者说有可能吗?谢谢
using System;
using System.Threading;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace ThreadPoolTest
{
class MainApp
{
static void Main()
{
ThreadPool.SetMaxThreads(10, 10);
ThreadPool.QueueUserWorkItem(DoWork); //doesn't work - a compute-bound thread
ThreadPool.SetMaxThreads(10, 10);
//doesn't work - still a compute-bound thread
((Action<object>)DoWork).BeginInvoke(null, Callback, null);
Console.Read();
}
static void DoWork(object o)
{
ShowAvailableThreads();
//call to external library - that does a long I/O operation
Thread.Sleep(10);
}
static void Callback(IAsyncResult ar)
{
ShowAvailableThreads();
}
static void ShowAvailableThreads()
{
int workerThreads, completionPortThreads;
ThreadPool.GetAvailableThreads(out workerThreads,
out completionPortThreads);
Console.WriteLine("WorkerThreads: {0}," +
" CompletionPortThreads: {1}",
workerThreads, completionPortThreads);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2470 次 |
| 最近记录: |