• 4026阅读
  • 1回复

[提问]请教Qt里如何将多线程被调用的函数,排列到单线程里执行? [复制链接]

上一主题 下一主题
离线ljf2238
 
只看楼主 倒序阅读 楼主  发表于: 2011-12-29

某个多线程的程序,在单线程模式下还正常,在多线程里跑就会崩溃。经初步检查原因,多线程调用其中某些函数存在问题

比如有如下几个函数:
f1 (p1){...}
f2 (p1,p2){...}
f3 (p1,p2,p3){...}

希望在多线调用时改为将被调用的函数排队到一个queue里顺序执行,并在原地等待,请问在Qt里应如何实现,谢谢。
离线dbzhang800

只看该作者 1楼 发表于: 2011-12-29
引用楼主ljf2238于2011-12-29 14:30发表的 请教Qt里如何将多线程被调用的函数,排列到单线程里执行? :
某个多线程的程序,在单线程模式下还正常,在多线程里跑就会崩溃。经初步检查原因,多线程调用其中某些函数存在问题。
比如有如下几个函数:
f1 (p1){...}
.......


哦,也就是你的函数不是线程安全的。没加锁就直接调用了??


引用楼主ljf2238于2011-12-29 14:30发表的 请教Qt里如何将多线程被调用的函数,排列到单线程里执行? :



希望在多线调用时改为将被调用的函数排队到一个queue里顺序执行,并在原地等待,请问在Qt里应如何实现,谢谢。
.......

  
Qt的信号槽在跨线程时默认就是按照你描述的这个方式工作的。如果你喜欢信号槽,就可以避免自己和锁去打交道
快速回复
限100 字节
 
上一个 下一个