C# 线程池问题

本人小白 刚刚接触线程 打个比方说把:
拿一些 IP (数目不定 可能大于或小于当前线程)
分成10线程进行ping (问题1 怎么进行分配)
次线程结束 主线程 输出ping通的IP (问题2 怎么主线程挂起等待次线程结束)
跪求大神 用代码与注释实现 以上实例
万分感谢

问题1:分成10个线程,是不是开启10个线程?
问题2:是不是要等所有都执行完毕后,执行主线程代码?追问

嗯 是这样的 只能开十个线程 但 IP个数不限

追答//从线程池调用10个空闲线程执行你的代码,执行完成后,主线程的代码继续执行
Parallel.For(0, 10, i => 
{
    //code
});

追问

主要问题是 IP数目 和线程数目不同
如 IP 15个 线程10个
如 IP5 线程10个
怎么办

追答

我不懂你说的ip是什么意思?

温馨提示:内容为网友见解,仅供参考
无其他回答

c#线程池如何控制并发最大线程数
2. 解决问题:如果不考虑服务器实际可支持的最大并行线程个数,程序不停往线程池申请新的逻辑线程,这个时候我们可以发现CPU的使用率会不断飙升,并且内存、网络带宽占用也会随着逻辑线程在CPU队列中堆积,而不断增大。如果我们想在主程序有200个http网络通讯需要执行,如何每次循环用10个线程并发处理10...

C#管理大量耗时的线程,内存占用严重
1.socket 的追踪问题,没法准确判断连接是否已经断开,今天技术问题很容易解决。2.多线程问题,每个客户端连接过来的时候都需要开辟一个新的线程去处理客户发来的消息。3.耗时的任务, 感觉关键在于耗时的任务,因为耗时的线程确实会很快消耗掉所有的线程池。首先,耗时是什么造成的,如果是硬盘读写,能否...

请问C#中使用线程池,这样的使用方式(下图)正确吗?后台有三个方法需要...
1. 应用程序中线程把大部分的时间花费在等待状态,等待某个事件发生,然后给予响应。这一般使用 ThreadPool(线程池)来解决。2. 线程平时都处于休眠状态,只是周期性地被唤醒。这一般使用 Timer(定时器)来解决。ThreadPool 类提供一个由系统维护的线程池(可以看作一个线程的容器),该容器需要 Window...

C#如何判断线程池中所有的线程是否已经完成
您只需要判定当前线程池的逻辑线程是否是您的初始值即可.因为系统的线程池拥有可配置逻辑线程数量的功能.当启动一个子线程时他就会将逻辑线程-1.(如果是IO线程则判断IO线程个数)如果与默认值或设定值相同.则说明子线程运行完毕

c#启动和结束线程的问题
1.对于ASP.net,在Session_Start里面启动线程是不好的设计,因为很多情况下(比如搜索引擎的爬虫抓取),每次访问都会导致新建一个Session,这样情况下线程很快会被用光的。ASP.net的页面处理全部依赖于线程池,而线程池中线程的数目和创建数量都是有限制的。2.一个线程应该有穷,也就是说执行完毕就应该...

c#使用线程还是线程池更好一点
如果你不需要对线程进行太复杂的控制,只是启动线程后续基本不再对它进行什么操作的话,选 线程池。线程池会根据需要创建新的线程,也就是说线程池不一定会开一个新的线程,而使用前者是一定会新开一个线程。线程开得过多,程序的运行效率是会下降的。

C#管理大量耗时的线程,内存占用严重
1)你一定看到过System.Net.Socket类中有很多BeginXXX \/ EndXXX的方法,例如Socket.BeginReceiveFrom和Socket.EndReceiveFrom,这些函数统称为异步函数。而异步函数操作的基础恰恰就是线程池。对Socket通信而言,微软提供的异步操作正是利用线程池中I\/O线程,目的就是为了提高Socket I\/O性能并简化内存管理的...

C# 多线程问题
你的这个问题还真不好处理,线程套线程,还想等待全部完成,如果不想改设计的话,就使用ManualResetEvent这个对象,每次线程创建子线程时,都创建这个对象,保证所有的线程都执行完毕再将阻塞放开。(可采用计数方式,开始记录需要创建多少个线程,再记录一个变量(原子型)每个子线程完成时都将变量值加1,...

C#线程池同一个时间跑10个线程怎么做
你有几个处理器核心,就能同时跑几个线程。同一个时间内能跑多少个线程,是受你处理器核心数限定的,跟软件无关。

c#编写了一个多线程程序但是出现40个线程同时运行就自动关闭程序但如果...
楼上正解,不过也可以自己写个线程池来管理和调度你的线程,你这种情况就是一下子运行太多线程的过,可以让线程以队列的形式一个一个执行,并发最好不要太多,CLR有线程管理和控制机制的,不能无限制的并发线程。

相似回答
大家正在搜