1

我最近一直在 Linux 上使用 pthreads,并希望在不久的将来开始研究使用 boost 线程。我从未使用过 MS Visual Studio,所以我不知道那里的方法,但我(必须)使用 Embarcadero C++ Builder(以前称为 Borland)我发现它的少数好东西之一是它有一个内置的类TThread。这是一个可以派生的类,以提供良好封装的数据以及启动和终止函数。我更喜欢这种方法而不是传递函数的 pthread 方式和void*被传递到线程创建函数中。我想知道是否有某种设计模式或结构通常用于提供以这种方式封装线程功能的更加面向对象的设计模式或结构?我可以尝试自己创建它,但我不能成为第一个渴望这种方法的人,我想知道是否有一种“标准”的方式来实现它。

编辑:或者,如果这是一个非常糟糕的主意,也许可以说明为什么?

4

2 回答 2

1

我认为最标准的方法是使用标准线程库(与 密切相关boost::thread,而不是 100% 相同)。我会避免重新设计已经由专家委员会设计、审查和验证的东西。

另请注意,对于您在评论中提到的那种操作,您可能需要查看标准库的未来部分(再次类似于 boost 对应部分),尤其是std::asynch函数。

于 2012-07-11T21:01:46.720 回答
0

我喜欢 boost::thread 的设计方式(我在 Rouge Wave 的线程库中看到了类似的设计)。基本上,通过传递要执行的函数来启动线程,然后可以使用该线程对象来加入该线程。pthread 在设计上非常相似,但 boost::thread 更容易使用。

于 2012-07-11T21:02:46.823 回答