- 主题:有没啥专用于线程间的消息通信的库?
这东东就是 Java 和 Python 里面常用的 blocking queue. 我之前开源过一个 Qt 的:
https://github.com/hgoldfish/qtblockingqueue
在项目主页演示了两个 blocking queue 的典型用例。
话说,C# 是不是到现在也还没有 blocking queue?
【 在 wjhtingerx 的大作中提到: 】
--
FROM 117.28.155.*
是 4.0 之后加的吗?我以前写 c# 的时候是没有的。
【 在 foliver 的大作中提到: 】
: c#很早就有了。
: --来自微微水木3.5.14
--
FROM 117.28.155.*
你这是典型的 C 程序员的思维。缺少抽象,所以每个项目都要写很多代码。
c++ 虽然比较丑。但是表达能力确实算主流语言里面较强的。有个抽象好的标准库,比如 boost, QtCore 之后,很省代码,开发速度很快。
BlockingQueue 是 MQ 在单机的抽象。如果再搭配 ThreadPool 的 map/imap/map_unorder ed,写代码时非常爽。
【 在 ylh0315 的大作中提到: 】
: 哪有那么费事,libc里一大堆pthread_打头的函数。
: 我都是用这些函数进行线程间通信。
: 实在不行,还有fifo,pipe,socket。
: ...................
--
FROM 117.28.155.*
像 BlockingQueue 这个东东,放到其它语言都是标准库的内容。Python, Java, C# 都有这些东东。
【 在 ylh0315 的大作中提到: 】
: 具体到每个项目,代码极少。
: 如果与C++结合一下,代码量少的极其,,怎么说呢,抽象到看不懂。
--
FROM 117.28.155.*
你可能没看明白,阻塞队列和无锁队列是两回事啊!
你想的可能是可并发访问的队列。
而阻塞队列是用于实现生产消费的消息队列。重点是消息队列。有空可以看看各种 MQ 的文档啊。像 Python 和 C# 的 BlockingQueue 都支持取消任务。
【 在 ylh0315 的大作中提到: 】
: 队列这玩意儿,这都是自己写,连公用库都不用,没几句话。(STL里好像有,不过我都是自己写)。
: 加个互斥锁条件锁。而已。
: 还有自己玩无锁队列的,我不喜欢那玩意儿,CPU开销太大。
: ...................
--
FROM 117.28.155.*
是的啊,网络通信序列化开销较大。但拿着 MQ 的概念来做线程间的通信也有大用处。这个是很通用的概念。像您老这样使用系统 API 来做不是不可以,但太费心力了。
【 在 ylh0315 的大作中提到: 】
: IBM的MQ整过一点,ZMQ也整过,那是网络通信,当然用作线程通信也可以。
--
FROM 117.28.155.*
你这种叫做 naive 实现。没有优化,功能太少,抽象不足。
对于很多 c++ 程序员,可能还是 map, foreach 纯函数会比较好一些。不容易出 BUG,性能也很强。
【 在 ylh0315 的大作中提到: 】
: 熟了没啥。
: 生产者3句,消费者3句。其中用个STL也可以。轮子是不需要的。
: 前边表演一下3句话的使用次序。找到这个次序费了点功夫。
: ...................
--
FROM 117.28.152.*
不是 native,有个词叫做 naive algorithm,可以看看。
在这里 naive 被翻译成朴素,而不是天真。
朴素实现并不是更坏。通常更容易理解与维护。比如 musl 的算法,经常采用比较朴素的算法而不是像 glibc 那样疯狂优化每种 CPU 平台都写个汇编实现。但朴素实现通常也意味着缺少优化,缺少考虑边界场景。
【 在 amony 的大作中提到: 】
: 您想说的时native吧……
--
修改:hgoldfish FROM 117.28.155.*
FROM 117.28.155.*
我最近也在做这个思考。比如我写 vue 的时候,不愿意引入 nodejs 的那一票东西,并且也不愿意引入太多的 js module. 于是有个同事说我是不是老了对于 web js 前端开发难以接受。于是我仔细想了一下:
1. 我知不知道那些技术的好处
2. 我知不知道那些技术的害处
3. 他知不知道那些技术的害处
又有一种情况,我推荐别人一个技术时:
1. 我自己有没有用过这个技术。
2. 我知不知道还有其它的技术方案?
3. 我知不知道这个技术的缺点。
想明白了就可以从心所欲嘛。
【 在 ylh0315 的大作中提到: 】
: 这话差不多,可能是吧,老了,接受新事物有点慢。
: 只不过觉得楼主提出了一个不是问题的问题(如同问,青蛙是怎样吃到蚊子的?),我这个井底之蛙都早就知道的解决方案,井上边的还搞了好多先锋前卫的复杂机械,连紫外线捕蚊灯都用上了。
--
FROM 183.253.143.*