又要问下蛋疼的多线程问题了
问题一
InitializeCriticalSectionAndSpinCount(MyCs,400);
这个API 函数 参数二 在多核的CPU机器下 怎么设置比较好。(设置范围是多大比较好 0-4000?)
问题二
delphi 下 线程.Terminate 和线程.DoTerminate 有什么不同?
希望详细一些说明
线程在 执行线程.Terminate之后有时候无法正常重新执行是什么原因?是线程代码问题么?
如何定位?
问题三
如何检查delphi编写的程序涉及到多线程死锁的问题和CPU占用的问题.
比如什么工具什么的.
希望 好心人关注下 ,谢谢 .
多线程 Delphi 多核 多线程死锁定位
[解决办法]
InitializeCriticalSectionAndSpinCount 第二个参数没啥研究,俺一般就用MSDN给出的参考值4000,但是这个4000不是上限,可以自己花点时间测试一个合适的值。
下面所说的线程是指TThread类的实例。TThread类是个抽象类,必须继承它并实现抽象方法Execute。
Terminate是将线程终止,DoTerminate是啥,没这个玩意吧。如果是说OnTerminate,这是个事件属性,是当线程终止后(不管是非正常终止还是线程执行完毕自动终止)的执行的回调函数。
线程Terminate后就没了,如何重新执行。
如果你是想要挂起线程,就用suspend,恢复线程执行用resume;
如果想要强大的调试维护功能,google Eurekalog 这个软件。