最近,我一直在寻找一个用于线程并发任务的库。理想情况下,它应该有一个简单的接口,可以在线程上调用函数。任何时候都有n个线程,有些线程比其他线程更快地完成任务并在不同的时间到达。
起初,我尝试使用Rx,它在c++中非常好用。我还研究了Blocks和TBB,但它们都是平台相关的。对于我的原型,我需要保持独立于平台,因为我们还不知道它将在什么上运行,并且当做出决定时可能会更改。
C++11有许多关于线程和并发的内容,我找到了很多示例,比如这个线程池的示例:
https://github.com/bilash/threadpool
类似的项目使用相同的lambda表达式和std::thread以及std::mutex。
这看起来非常适合我所需的。但是也存在一些问题。线程池是由定义数量的线程启动的,任务被排队,直到线程空闲。
如何添加新线程?删除过期线程?(.Join()??)
显然,对于已知数量的线程来说,这要容易得多,因为它们可以在构造函数中初始化,然后在析构函数中加入(join())。
对于有C++并发经验的人,有什么技巧或指针可以提供吗?