|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2019/11/29 12:36:37 |
标题: |
|
加入我的收藏 |
楼主: |
cpu是e5300,
结果我开了4个线程, 这4个线程里面是无限循环的, 永远不结束.
再开第5个, 发现第5个及以后的线程都执行不了..
怎么办?
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行. |
作者: |
|
2019/11/29 12:40:27 |
1楼: |
性能参数 CPU主频 2.6GHz 核心数量 双核心 线程数量 双线程 *2=4
----------------------------------------------
[alias] co = clone --recurse-submodules up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
|
作者: |
|
2019/11/29 12:55:33 |
2楼: |
建议线程数 = 核心数x2 单核单线程=1个核心 单核双线程=2个核心。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2019/11/29 13:38:32 |
3楼: |
不换cpu, 第5个线程就跑不了?
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
|
作者: |
|
2019/11/29 19:58:09 |
4楼: |
没解决方案吗??
旧cpu就开不了5个以上的线程??
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
|
作者: |
|
2019/11/29 21:07:27 |
5楼: |
这是你代码问吧!4个无限循环的线程是不是占用了太多CPU?,导致CPU没有多余的时间处理其他的指令了?
----------------------------------------------
|
作者: |
|
2019/11/29 21:19:19 |
6楼: |
@xuchuantao (暗黑天使)
就无限循环查询.. 我发现第5个线程永远进不进.. 应该是在排队.
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
|
作者: |
|
2019/11/29 22:01:38 |
7楼: |
单核CPU一样可以开N多线程,像你的4-5个线程不是问题。 主要是每个线程获得时间片,不停地轮询执行
----------------------------------------------
武稀松http://www.raysoftware.cn
|
作者: |
|
2019/11/29 22:03:02 |
8楼: |
@wr960204 (武稀松)
有四个线程, 是无限循环, 一秒都不停地工作, 查询..
那我第5+线程什么时候才开始工作? 感觉它们一直排队没机会工作...
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
|
作者: |
|
2019/11/29 23:56:48 |
9楼: |
那么问题来了,为啥要无限一个线程循环...就不能分割嘛?——不断生成子线程,不断释放子线程....
----------------------------------------------
相信自己,若自己都不相信,那还有谁可信。
|
作者: |
|
2019/11/30 0:01:48 |
10楼: |
@letianwuji (乐天无极)
这样不是还是for循环吗, 有什么区别?
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
|
作者: |
bjlg (蓝天) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2019/11/30 10:21:56 |
11楼: |
@tuesdays 难道windows的线程直接分配到各个CPU中码? 如果是这样,windows的程序都是怎么运行的?
----------------------------------------------
http://delphi.icm.edu.pl/ftp/http://delphi-z.ru
|
作者: |
|
2019/11/30 10:36:05 |
12楼: |
硬件上的线程祇代表核心被规划出的同步处理线程数。 实际上软件的线程多于硬件提供线程时, 软件的多条线程可被分配到硬件其中一条线程上。 因此码奴不需太关注硬件提供多少线程。 处理器与操作系统应懂得如何分配。
----------------------------------------------
-
|
作者: |
bdl1 (bdl1) |
▲▲▲▲▲ |
-
|
普通会员 |
|
2019/11/30 19:04:27 |
13楼: |
这是什么问题?
----------------------------------------------
-我的博客
|
作者: |
|
2019/11/30 19:33:25 |
14楼: |
一秒都不停你第五个线程肯定是没有资源执行的,资源都被其他线程占用完了。建议读下操作系统设计概论等有个操作系统设计的书籍。
----------------------------------------------
|
作者: |
|
2019/11/30 20:07:53 |
15楼: |
来给你正确答案
1.你开多少线程和 核心数无关 1核心的一样可以开10 个20个线程 2.你说4个第5个 没反应不操作了 要检查是不是死锁 3.为什么推荐 n核心 开2*n的线程。 这是因为理论上 这样CPU切换的少 性能好。不代表只能开这么多线程
别说10个20个 1000个都可以开
----------------------------------------------
-
|
作者: |
|
2019/11/30 20:41:06 |
16楼: |
死锁怎么检查?
我只看到线程忙碌着4个..
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
|
作者: |
|
2019/11/30 22:09:50 |
17楼: |
比如你用 SQLEXPRESS,你一次能连 N 个就是极限了,不花钱的 SQLSERVER 就不让你多连第 N + 1 个。 这就叫 资源不够。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2019/12/1 3:27:28 |
18楼: |
@tuesdays
你可以开4个线程每个 sleep 10分钟 你开第五个 死循环输出点东西 就知道了
----------------------------------------------
-
|
作者: |
|
2019/12/2 11:50:26 |
20楼: |
procedure TForm8.BitBtn1Click(Sender: TObject); begin redt1.Lines.Add('线程正忙: '+ IntToStr(Workers.BusyWorkers)); Workers.Post(procedure (ajob:PQJob) var lins:TRichEdit; begin lins := TRichEdit(ajob.Data); lins.Lines.Add( '线程Handle: '+IntToStr(ajob.Handle) ); fun_Delay(1000*1000); // 不知道多少秒. end, Pointer(redt1), False); end;
最多9个线程, 就加不了了... 求解决方案.
此帖子包含附件:
大小:18.2K |
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
|
作者: |
|
2019/12/2 16:42:11 |
21楼: |
@tuesdays
请使用TThread
Qworker是个线程池 里面线程数 当然是固定的。
----------------------------------------------
-
|
作者: |
|
2019/12/2 16:42:51 |
22楼: |
@tuesdays
你使用线程池 当然没法加线程。常识啊。。。。我这新手小白都知道。。
你非要多点 那就设置 Worker的最大线程数即可
----------------------------------------------
-
|
作者: |
|
2019/12/2 17:27:06 |
23楼: |
@chencong5025 (Nicosoft)
怎么设置? 默认不是最大吗?
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
|
作者: |
|
2019/12/2 17:37:43 |
24楼: |
Workers.MaxWorkers := 90;
// 加了这个应该解决了.
此帖子包含附件:
大小:14.9K |
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
|
作者: |
|
2019/12/2 18:51:43 |
25楼: |
星二不是出来逗宝的吧
----------------------------------------------
中间件QQ群: 92449782 博客: http://www.cnblogs.com/hnxxcxg/
|
作者: |
|
2019/12/2 23:39:19 |
26楼: |
这代码辣眼睛
----------------------------------------------
-
|
作者: |
|
2019/12/2 23:44:42 |
26楼: |
单核CPU跑100个线程,D7,俺测试过,没问题。
----------------------------------------------
-
|
作者: |
|
2019/12/3 11:04:28 |
27楼: |
搞半天,ta啥都没去了解过多线程的含义...大家散了散了
----------------------------------------------
相信自己,若自己都不相信,那还有谁可信。
|
作者: |
|
2019/12/3 12:22:00 |
28楼: |
@tuesdays 一般来说默认就是 核心数x2 具体看各家线程池自己的 初始线程数
----------------------------------------------
-
|
作者: |
|
2019/12/4 18:04:08 |
29楼: |
单核CPU,可以开同时多个线程,但是正在执行的只有一个线程,线程按排队的顺序一一执行。
----------------------------------------------
Everyone will to do best!
|
作者: |
|
2019/12/5 11:29:32 |
30楼: |
单CPU,不管是几核,多线程都没问题,只不过不是真正的同时运行
多PCU才能做到并发运行
----------------------------------------------
-
|
作者: |
|
2019/12/19 9:21:32 |
31楼: |
亲爱的星二,你倒底想开几个线程?难倒你单CPU倒开多线程,我多CPU倒不开车?
----------------------------------------------
中间件QQ群: 92449782 博客: http://www.cnblogs.com/hnxxcxg/
|
|