Comments (13)
如果如你所说那真有bug了
from zltoolkit.
看你也是半桶水
from zltoolkit.
我半桶水?要干货不?你一个 post(10)
难道 10 次 syscall ?zz 不。
from zltoolkit.
@lhmouse 你看清楚在骂人zz好吗?这个是信号量实现,难道信号量+1要唤醒所有的线程吗?到底谁是智障?
from zltoolkit.
你那个 count
大于 1 的时候就应该 notify_all()
有意见?
顺便,你既然依赖 std::condition_variable
就别指望什么效率了。
from zltoolkit.
信号量加n次就唤醒等待的线程n次 按你那样改 那岂不是乱套了? 我要的是实现快平台的信号量 不是条件变量
from zltoolkit.
好像你不 notify 就没有 spurious wakeup 似的。
p.s. 这水平好意说人家半桶水?
from zltoolkit.
需要我怎么教♂育你呢?
你的 semaphore 依然是基于 mutex + condition variable 实现的,然而 condition variable 是一个 不可靠的 protocol 。按照最通常的写法, condition variable 的 wait()
操作是写在一个 while
循环里的。按照这种写法 ,注意,对 semaphore 的 P 操作并不一定会导致对其中的 condition variable 的 wait()
, 但是对 semaphore 的 V 操作(如果增量不是零)一定会导致对 condition variable 的 signal()
或 broadcast()
,所以显然 后者才是更需要优化的。
from zltoolkit.
@lhmouse 我要的是信号量 你要notify_all到底要实现什么鬼?你这issue标题是要探讨问题?我是水平有限 ,我做这个库不是要搞个多么牛逼多么高大上多么健全的玩意,我只是为了我另外一个流媒体项目服务,开源的基础框架很多,相比而言,这个项目简直是小儿科。
在对信号量+n操作中,我咋知道有多少条线程在等待?notify_one() n次是比较靠谱的做法,虽然有n次系统调用,但是先实现功能然后才有性能优化,你直接来个notify_all()功能都不能保证,谈性能有什么意义?
from zltoolkit.
@lhmouse 如果你有更高明的做法,请给我一份修改后的代码 我将感激不尽 谢谢
from zltoolkit.
怎么就“不保证功能”了? semaphore 的可靠性是 mutex 保证的又不是 condition variable 保证的,否则还要 while 干啥。
from zltoolkit.
要不你把你修改后的代码贴出来?我看看行不行
from zltoolkit.
我没告诉你怎么改吗?是不是把 patch 糊你脸上才算告诉你?
while (n--) {
_condition.notify_one();
}
改成
_condition.notify_all();
会死是不是?
from zltoolkit.
Related Issues (20)
- 进程(调用Debug版版本库)退出时异常 HOT 9
- 多个线程打印同一个日志时,由于日志优化会导致写的日志不对 HOT 1
- ssl 支持多线程 问题求助 HOT 2
- Threadpool的cpu负载统计好像有问题 HOT 1
- udp数据可能被误读 HOT 1
- QQ群没有找到
- error C2988: 不可识别的模板声明/定义 HOT 1
- Poller和Timer 问题
- 请问:ubuntu16.04编译不通过,什么原因? HOT 1
- 关于poller线程的讨论
- 关于TcpServer主动退出的问题 HOT 1
- zltookkit使用
- 技术咨询:modifyEvent提示Invalid argument HOT 12
- Windows下使用,创建TcpServer时抛出了异常"addEvent | select() can not watch fd bigger than 1024" HOT 2
- test_tcpEchoServer.cpp例子中Buffer的使用是否正确? HOT 9
- 可以加上websocket和http支持吗 HOT 1
- SSL_Box的_read_bio和_write_bio没有BIO_free释放内存是否泄漏? HOT 2
- 关于Socket::enableRecv在epoll 边沿模式下使用的bug HOT 9
- Send函数多线程出现死锁问题 HOT 1
- test_pingpong 性能测试,千兆网卡带宽,带宽的80%下,为什么测试会频繁出现socket send timeout HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from zltoolkit.