C++中程序在哪些场合应该使用多线程
展开全部
用一句话来回答就是:当你想一心二用的时候你就应该使用多线程!比如我现在想一边敲这些字一边和可乐就得用多线程。在你炒菜的同时又要烧水也得用多线程(并发)。。当你很用心在写一段很长的代码的时候,如果别人在这个时候叫你,你不希望听不见那么也得用多线程(防止阻塞,UI假死)。再比如分房的年代,如果是按照人头分房,你希望分的房子大一点那么你也得用多线程(可能会获得更多的CPU时间片,特别是在多核上)。如果你是一个创业者,当你的公司渐渐的长大,人越来越多,事情也越来越复杂的时候,你希望不同的人去做不同的事情,你希望把更多的资源给重要的人,而不希望(至少希望不是很多)那些不太重要的事情占用你某些宝贵的资源的时候,你也得用多线程(优先级)。因此我认为有四种情况,我们是需要使用多线程的。即:
1. 有多件事情,顺序执行无法满足的时候;
2. 在处理长时间的事情(算法)时为了防止应用界面(UI)不响应用户输入,造成UI假死的时候;比如大图像渲染、大数据处理/排序、搜索等
3. 为了通过获得更多的CPU时间片来提高程序效率的时候;
4. 需要同时处理的事情有优先级别的时候;应该使用高优先级线程管理对时间要求很急的任务,而使用低优先级线程执行被动任务或者对时间不敏感的任务。
1. 有多件事情,顺序执行无法满足的时候;
2. 在处理长时间的事情(算法)时为了防止应用界面(UI)不响应用户输入,造成UI假死的时候;比如大图像渲染、大数据处理/排序、搜索等
3. 为了通过获得更多的CPU时间片来提高程序效率的时候;
4. 需要同时处理的事情有优先级别的时候;应该使用高优先级线程管理对时间要求很急的任务,而使用低优先级线程执行被动任务或者对时间不敏感的任务。
展开全部
多线程的使用主要是用来处理程序“在一部分上会阻塞”,“在另一部分上需要持续运行”的场合。一般是根据需求,可以用多线程,事件触发,callback等方法达到。但是有一些方法是只有多线程能办到的就只有用多线程或者多进程来完成。
举个简单的例子,能理解就行。假设有这样一个程序,
1会不停的处理收到的所有TCP请求。对于每个TCP请求做不同的操作。不能有遗漏
2有很多特定的请求会向一个服务器发送存储的数据,或者是等待用户输入。
我们来看看。第1个要求很简单。用个while循环就搞定了。但第2个特性呢。一旦在等待用户输入或者是连接服务器时,程序会“阻塞”一段时间,这一段时间内就无法处理其他的TCP请求了。
所以可以利用多线程,每个线程处理不同的TCP请求。这样程序就不会“阻塞”掉了。
举个简单的例子,能理解就行。假设有这样一个程序,
1会不停的处理收到的所有TCP请求。对于每个TCP请求做不同的操作。不能有遗漏
2有很多特定的请求会向一个服务器发送存储的数据,或者是等待用户输入。
我们来看看。第1个要求很简单。用个while循环就搞定了。但第2个特性呢。一旦在等待用户输入或者是连接服务器时,程序会“阻塞”一段时间,这一段时间内就无法处理其他的TCP请求了。
所以可以利用多线程,每个线程处理不同的TCP请求。这样程序就不会“阻塞”掉了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1。某段程序运行时间过长,导致界面死掉,可以将其放入线程
2。某些代码片段需要反复执行,可以放入线程。
3。提高程序的运行效率
2。某些代码片段需要反复执行,可以放入线程。
3。提高程序的运行效率
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只要想同一时间做不同的事就可以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询