使用C ++实现线程

时间:2008-11-19 21:21:32

标签: c++ multithreading

我在我的应用程序中有一个API调用,我正在检查单个调用所花费的时间。我把它放在FOR循环中并使用10000次调用来获得所有呼叫的平均时间。现在出现的问题是使用API​​的实际应用程序是多线程的。如果我想让我的应用程序也这样做,我将如何做到这一点?

平台是REL,我的目标是使用相同的参数或不同的参数同时发送多个呼叫。这可以用C ++实现吗?如果可以,可以使用哪些库函数,并且可以提供相同的示例?

7 个答案:

答案 0 :(得分:7)

用于线程的最好的C ++库可能是Boost中的线程库,但与所有C ++线程一样,您将被迫手动执行同步。您需要使用互斥锁和锁定类型才能使其正常工作。你的问题不是很清楚,所以我不能再帮助你了(虽然我认为你实际上并不需要线程,但我可能完全是误解)。

答案 1 :(得分:1)

如果您阅读了Miranda IM源代码,它应该可以帮助您入门。它做得非常好,并且代码中有一些很好的提示,用于如何重新设置其他可执行文件的内存偏移量(在Windows上),以加快它们的加载速度。

http://www.miranda-im.org/development/

答案 2 :(得分:1)

我不知道REL平台。

我可能会建议使用OMP替代方案,它并不完全是每个人所说的线程,但是它可以完成这项任务并且很容易用于这种情况。显然它运行了很多compilers

答案 3 :(得分:0)

在什么平台?几乎每个人都支持线程,我想他们都有关于如何创建线程的文档。在Windows下,您将调用CreateThread API。

答案 4 :(得分:0)

Pthreads是你用Linux做的。 适用于Solaris的Solaris线程。

答案 5 :(得分:0)

我不熟悉REL平台。一般来说,我更喜欢Intel's TBB进行线程处理,但它现在只在x86芯片上运行。

答案 6 :(得分:0)

从C ++ 11开始,不再需要使用Boost了。 C ++ 11包含std::thread,支持互斥体,条件变量等,与Boost一样。

您可以在C++ reference中查看C ++ 11在线程方面提供的内容。