社区
网络通信/分布式开发
帖子详情
多线程操作时发生的问题
winstonbonaparte
2010-05-25 01:46:23
在程序中,设备异步不停的发送信息上来,我将接收到的信息存至一个TList中存放,并且使用了TRTLCriticalSection,另一个线程A也是不停的在执行,当判断这个TList.Count 大于0时,就将信息取出,进行分析后存至数据库。当然,这里也用到了临界区。但现在有这样的一个问题,程序运行了几天之后(有时候是一天,有时候是两三天),线程A就不执行操作了。我查看过,那个TList的count不断在上升,而线程A就是不处理
...全文
176
15
打赏
收藏
多线程操作时发生的问题
在程序中,设备异步不停的发送信息上来,我将接收到的信息存至一个TList中存放,并且使用了TRTLCriticalSection,另一个线程A也是不停的在执行,当判断这个TList.Count 大于0时,就将信息取出,进行分析后存至数据库。当然,这里也用到了临界区。但现在有这样的一个问题,程序运行了几天之后(有时候是一天,有时候是两三天),线程A就不执行操作了。我查看过,那个TList的count不断在上升,而线程A就是不处理
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
z184931481
2010-06-03
打赏
举报
回复
关注,等高手
SQLDebug_Fan
2010-05-28
打赏
举报
回复
写多线程一定要用ProceXP,看到线程状态和堆栈就很好定位,就知道线程卡在什么地方了?还可以通过MAP地址找到代码行。
winstonbonaparte
2010-05-28
打赏
举报
回复
[Quote=引用 11 楼 suihu 的回复:]
更新数据和界面时,要加同步(Synchronize)。
系统异常后,线程会挂起。
[/Quote]
我在这个线程里面有执行一个过程,而这个过程里有加另一个临界区对另一个线程的TList进行操作。
我这个线程调用那个过程的时候才有更新数据和界面的,这也需要加Synchronize吗?
如果挂起了,那又要如何判断和恢复?
iqyely
2010-05-28
打赏
举报
回复
关注下。
ok1411
2010-05-26
打赏
举报
回复
当判断这个TList.Count 大于0时,就将信息取出,进行分析后存至数据库
还有这里,你是不是一次只处理了一条?只处理一条的话肯定会有遗留下来的
ok1411
2010-05-26
打赏
举报
回复
线程A也是不停的在执行,这个什么意思?
每当有消息时去唤醒就可以了
ok1411
2010-05-26
打赏
举报
回复
估计是线程的问题,是不是处理中出异常了?
SQLDebug_Fan
2010-05-26
打赏
举报
回复
用ProceXP查看一下线程状态和堆栈,看线程是停在哪个地方,然后就好定位问题了。
sanguomi
2010-05-26
打赏
举报
回复
这种要看代码才知道。
winstonbonaparte
2010-05-26
打赏
举报
回复
[Quote=引用 1 楼 imho888 的回复:]
你使用了临界区按道理应该是没问题的
或者你试试线程同步或锁
或者自己定义一个WaitFor
[/Quote]
主要是一开始是没有问题的,只有运行了一段时间之后才会出现这样的错误
suihu
2010-05-26
打赏
举报
回复
更新数据和界面时,要加同步(Synchronize)。
系统异常后,线程会挂起。
luojun198305
2010-05-26
打赏
举报
回复
估计是你的线程由于异常或其它原因挂起了
sanguomi
2010-05-26
打赏
举报
回复
线程不执行,你检查下线程状态,有可能你线程都挂了。
winstonbonaparte
2010-05-26
打赏
举报
回复
[Quote=引用 6 楼 ok1411 的回复:]
线程A也是不停的在执行,这个什么意思?
每当有消息时去唤醒就可以了
[/Quote]
线程A
while not Terminated do
begin
end;
那个队列是通过设备回调函数传上来的数据增加进去的。就算我只处理一条也没关系的啊,我从这队列取出一条赋给一个变量,然后就从这个队列里删了它的。然后再慢慢去处理这条数据的
imho888
2010-05-25
打赏
举报
回复
你使用了临界区按道理应该是没问题的
或者你试试线程同步或锁
或者自己定义一个WaitFor
HashMap
多线程
操作
下的
问题
总结
HashMap
多线程
操作
下的
问题
总结 HashMap
多线程
操作
会造成一系列
问题
,这很多人都知道。但反过来根据现象查
问题
,可能就不那么明显了。因此这里对
多线程
下HashMap使用会造成的
问题
做个小总结,以供大家“根据现象反查
问题
”作参考。
Python
多线程
详解
现代计算机CPU物理核心普遍比较多,我们在编写程序
时
经常会用到
多线程
技术来提高程序运行的效率。作为python萌新,我在掌握基本语法后就很想摆弄一下python的
多线程
,使用起来确实很有python的特点,代码量少、
操作
方便。之后断断续续写了一些
多线程
程序,直到今天下午逛论坛,看到很多人说python
多线程
机制的一些内情,我才意识到自己有多愚蠢哈哈。我把自己学到的内容系统的整理一下,以备后忘,也帮帮后来者。
3-04
多线程
相关
概念:
多线程
是指一个进程(执行中的程序)同
时
运行多个线程(进程中负责程序执行的执行单元),
多线程
可以协作完成进程工作,其目的是更好的利用 CPU 资源 Java线程具有五中基本状态 新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread(); 就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线...
python的
多线程
python
多线程
一、线程的概念 线程是CPU分配资源的基本单位。当一程序开始运行,这个程序就变成了一个进程,而一个进程相当于一个或者多个线程。当没有
多线程
编程
时
,一个进程相当于一个主线程;当有
多线程
编程
时
,一个进程包含多个线程(含主线程)。使用线程可以实现程序大的开发。 多个线程可以在同一个程序中运行,并且每一个线程完成不同的任务。
多线程
实现后台服务程序可以同
时
处理多个任务,并不
发生
阻塞现象。
多线程
的程序设计的特点就是能够提高程序执行效率和处理速度。python程序可以同
时
并行运行多个相对独立的线
Java
多线程
- 线程安全
问题
文章目录1. 什么是线程安全和线程不安全?2. 自增运算为什么不是线程安全的?3. 临界区资源和竞态条件 1. 什么是线程安全和线程不安全? 什么是线程安全呢?当多个线程并发访问某个Java对象
时
,无论系统如何调度这些线程,也无论这些线程将如何交替
操作
,这个对象都能表现出一致的、正确的行为,那么对这个对象的
操作
是线程安全的。 如果这个对象表现出不一致的、错误的行为,那么对这个对象的
操作
不是线程安全的,
发生
了线程的安全
问题
。 2. 自增运算为什么不是线程安全的? 线程安全实验:两个线程对初始值为 0 的静态变
网络通信/分布式开发
1,593
社区成员
32,964
社区内容
发帖
与我相关
我的任务
网络通信/分布式开发
Delphi 网络通信/分布式开发
复制链接
扫一扫
分享
社区描述
Delphi 网络通信/分布式开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章