• 5758阅读
  • 1回复

多线程加锁的问题 [复制链接]

上一主题 下一主题
离线isml
 

只看楼主 倒序阅读 楼主  发表于: 2010-09-09
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
现在我有一个GUI程序,界面中有一个表格,两个按钮(开始和清空),当点击“开始”按钮的时候,会开一个QThread线程,该线程能接受UDP数据,并通过signal发送出来,所以我在主GUI中connect了这个thread的signal,并在接受的slot函数中(命名为OnRecvData)把接收到的数据插入到表格中。而点击“清空”按钮的时候会调用函数OnClearData清除表格中的数据。现在问题来了,函数OnRecvData和OnClearData都操作了表格对象,是否需要加互斥锁?

目前我没有加,因为我觉得OnRecvData函数虽然导致它被调用的信号是在另外一个线程中发出,但执行还是在主GUI的线程中,所以和OnClearData函数还是属于在单线程中执行,所以不需要加锁,请问这样有没有问题?
离线lejcey

只看该作者 1楼 发表于: 2011-01-21
不锁定肯定崩溃,最简单的方法,点击一个按钮后,两个按钮都setEnable(false),或者加一个成员变量bool isLock,在函数开始执行的时候检查这个变量就行。
[ 此帖被lejcey在2011-01-21 21:27重新编辑 ]
快速回复
限100 字节
 
上一个 下一个