读书人

请问线程方面的有关问题?

发布时间: 2013-01-08 14:02:14 作者: rapoo

请教线程方面的问题???
问题帖子:http://topic.csdn.net/u/20120923/23/ebcf7e71-8e4a-4fd6-b849-0dd9b800c8d4.html 按照大家提供的一个方法,打印程序中的信息。。。。通过跟踪,发现到后来是由于数据处理线程(dealthread)得不到执行造成的,如:线程在2012-10-02-21-26-49时在运行,之后一直没能执行,直到2012-10-02-22-44-28才又得到执行,而且我确定正常情况下,此处理线程应该一直在执行。但是我不知道如何解决此问题。
在程序中我将数据处理线程的优先级设置为tplower(线程优先级比正常低1点),有可能是此处造成的问题,当主线程一直忙时,数据处理线程得不到执行,但是将其设为正常优先级的话,主线程接收数据的线程很多数据都没能放入队列中......
望高手们能提供些建议
[解决办法]
互斥变量或者临界区、同步等没处理好。
[解决办法]
看看置顶的帖子:[置顶] 线程!线程!!线程!!!(Delphi版)
http://topic.csdn.net/u/20110217/11/56577c65-2e77-4f8f-b541-0be47cdb4d60.html?46037
[解决办法]
把你的代码贴出来,你确定是线程优先级引起的,你把你的应用中加上CPU空闲执行过程打印下看看是什么情况,
[解决办法]
Application.OnIdle这个是应用空闲所执行的过程你打印看下,如果线程得不到执行但空闲处理过程得到执行应该是你的线程处理有问题。
[解决办法]
用临界区
[解决办法]
你得将你的数据处理流程说明

按我的理解应该是主线程有接收数据和处理数据的线程,接收线程接收数据将数据放入队列,处理线程将数据从队列取出处理。这个队列得用临界区了。不知道是不是这样
[解决办法]
落伍了啊,这是什么东东WRclient.Acquire;我都不认识了

数据队列要保证任何时刻只能有一个线程访问,包括主线程,不知道你这个是不是了。
[解决办法]
感觉应该是处理同步时出错了!造成数据处理无法正确加入队列
建议还是考虑一点点的看下线程内部是否有操作全局变量或者VCL控件吧。
记着使用临界区

读书人网 >.NET

热点推荐