Chinaunix

标题: 对于单线程的程序来说,是不是没有必要去弄“锁”什么的? [打印本页]

作者: fender0107401    时间: 2016-04-12 14:34
标题: 对于单线程的程序来说,是不是没有必要去弄“锁”什么的?
比如说用QT做了一个客户端,整个程序就是一个单线程的,socket和ui都在一个线程里面。

这种情况下,是不是根本没必要用“锁”。
作者: VIP_fuck    时间: 2016-04-12 14:35
如果用锁的话,撸主想锁什么?
作者: evaspring    时间: 2016-04-12 14:40
确实没有必要用锁 不过这样好吗
作者: fender0107401    时间: 2016-04-12 14:41
回复 2# VIP_fuck

我也不知道,之前用ASIO的Socket,现在用QT的Socket有点不习惯。

主要是现在UI和Socket都在一个线程里面,突然感觉太容易了。。。

之前的Socket在写操作的时候,是有锁的,现在感觉完全不用了。。。
作者: VIP_fuck    时间: 2016-04-12 14:42
回复 4# fender0107401


    没啥要锁的,那就不用呗,还增加复杂度了。
作者: cjaizss    时间: 2016-04-12 14:47
还有中断
作者: fender0107401    时间: 2016-04-12 14:48
我感觉,在QT里面,如果客户端和服务器的网络通信的数据量很小的话,完全可以用一个线程搞定,嘿嘿。
作者: fender0107401    时间: 2016-04-12 14:50
cjaizss 发表于 2016-04-12 14:47
还有中断


这个我不懂。
作者: cjaizss    时间: 2016-04-12 14:52
本帖最后由 cjaizss 于 2016-04-12 14:53 编辑
fender0107401 发表于 2016-04-12 14:50
这个我不懂。

比如你想开几个类似软中断模型中做点事情,可能还是得考虑的.
类比于我们现在一个ARM裸机下,一堆中断,做一堆事情.
作者: hellioncu    时间: 2016-04-12 14:54
不建议ui和socket共用一个线程,影响用户体验
作者: fender0107401    时间: 2016-04-12 15:17
cjaizss 发表于 2016-04-12 14:52
比如你想开几个类似软中断模型中做点事情,可能还是得考虑的.
类比于我们现在一个ARM裸机下,一堆中断,做一 ...


嘿嘿,还是不懂啊,没办法,我不是科班出身学计算机的。。。
作者: fender0107401    时间: 2016-04-12 15:18
hellioncu 发表于 2016-04-12 14:54
不建议ui和socket共用一个线程,影响用户体验


好吧,要不还是两个线程吧。。。
作者: cokeboL    时间: 2016-04-12 16:17
回复 10# hellioncu


    不会的,网络io那点,基本不会造成瓶颈,ui,人眼还好的,我们经常为了不烧机器把帧率设置得低一点。。。
作者: hellioncu    时间: 2016-04-12 16:38
cokeboL 发表于 2016-04-12 16:17
回复 10# hellioncu


那也是看应用情况的,通信量有大小,服务器应答有快慢
作者: cokeboL    时间: 2016-04-12 16:50
回复 14# hellioncu


    这倒是,不过还好,非阻塞的,除非通信量特别大或者通信数据要做的运算会卡帧
作者: 流氓无产者    时间: 2016-04-13 09:38
hellioncu 发表于 2016-04-12 14:54
不建议ui和socket共用一个线程,影响用户体验

你还写UI?
作者: hellioncu    时间: 2016-04-13 10:11
流氓无产者 发表于 2016-04-13 09:38
你还写UI?


咱全能神     
作者: lwhjava    时间: 2016-04-13 19:29
不需要锁吧,除非有多线程操作共享数据时
作者: lxyscls    时间: 2016-04-15 09:19
回复 1# fender0107401


    果断用十遍
    单线程的mutex应该就只是用户态atomic置个位,不陷入内核,所以没什么开销;但是如果是sem的话,就会涉及到关断信号什么的,所以开销要大些




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2