當(dāng)前位置:
首頁(yè) >
线程工具类(根据电脑逻辑处理器个数控制同时运行的线程个数)
發(fā)布時(shí)間:2025/7/14
59
豆豆
生活随笔
收集整理的這篇文章主要介紹了
线程工具类(根据电脑逻辑处理器个数控制同时运行的线程个数)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
代碼:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks;namespace Utils {/// <summary>/// 線程工具類/// </summary>public class ThreadUtil{/// <summary>/// 使用的邏輯處理器數(shù)/// </summary>private static int _ProcessorCount;private static Semaphore _semaphore;private static List<Task> _TaskList = new List<Task>();private static object _lock = new object();static ThreadUtil(){_ProcessorCount = Environment.ProcessorCount * 2 / 4; //使用的邏輯處理器數(shù)if (_ProcessorCount < 1) _ProcessorCount = 1;_semaphore = new Semaphore(_ProcessorCount, _ProcessorCount);}public static void Run(Action<object> doWork, object arg, Action<Exception> errorAction){Task task = null;task = Task.Factory.StartNew((obj) =>{_semaphore.WaitOne();try{doWork(obj);}catch (Exception ex){errorAction(ex);}_semaphore.Release();lock (_lock){_TaskList.Remove(task);}}, arg);lock (_lock){_TaskList.Add(task);}}public static void WaitAll(){Task.WaitAll(_TaskList.ToArray());}} } View Code使用方法:
ThreadUtil.Run((obj) => {//todo },arg,(ex)=> {//錯(cuò)誤處理 }); View Code?
轉(zhuǎn)載于:https://www.cnblogs.com/s0611163/p/8065478.html
總結(jié)
以上是生活随笔為你收集整理的线程工具类(根据电脑逻辑处理器个数控制同时运行的线程个数)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux下父子进程的全局变量
- 下一篇: 微软面试+实习总结