我想知道如何在C++中的双核处理器中执行两个进程。我知道线程(或多线程)不是C++的内置功能。C++线程 - 并行处理
在Qt中有线程支持,但我从他们的参考文献中不能理解任何东西。 :(
因此,没有人知道对于初学者做一个简单的方法。跨平台支持(如QT),因为我在Linux将是非常有益的。
我想知道如何在C++中的双核处理器中执行两个进程。我知道线程(或多线程)不是C++的内置功能。C++线程 - 并行处理
在Qt中有线程支持,但我从他们的参考文献中不能理解任何东西。 :(
因此,没有人知道对于初学者做一个简单的方法。跨平台支持(如QT),因为我在Linux将是非常有益的。
看看Boost.Thread。这是跨平台的,是一个非常好的库,可用于C++应用程序。
您特别想知道什么?
我建议使用Boost库Boost.Thread来代替。这将包装Win32和Posix的平台特性,并为您提供一套可靠的线程和同步对象。这也是非常繁重的用途,所以寻找SO和其他网站遇到的任何问题的帮助很容易。
尝试Multithreading in C++0x part 1: Starting Threads为101。如果编译器没有C++0x支持,那么留在Boost.Thread
您可以搜索一个免费的PDF书籍“C++ - GUI编程与 - Qt的4-1st -ed.zip“并阅读第18章关于Qt中的多线程。 Qt支持
并发编程功能,包括(但不限于)以下内容:
但是,请注意以下与Qt的取舍:
如果你可以用上述限制住,只要按照这些食谱使用的QThread:
Sameple代码:
#include <QtCore>
class MyThread : public QThread {
public:
void run() {
// do something
}
};
int main(int argc, char** argv) {
MyThread t1, t2;
t1.start(); // default implementation from QThread::start() is fine
t2.start(); // another thread
t1.wait(); // wait for thread to finish
t2.wait();
return 0;
}
在C++ 14的一个重要音符,穿线使用并发可用:
#include<thread>
class Example
{
auto DoStuff() -> std::string
{
return "Doing Stuff";
}
auto DoStuff2() -> std::string
{
return "Doing Stuff 2";
}
};
int main()
{
Example EO;
std::string(Example::*func_pointer)();
func_pointer = &Example::DoStuff;
std::future<string> thread_one = std::async(std::launch::async, func_pointer, &EO); //Launching upon declaring
std::string(Example::*func_pointer_2)();
func_pointer_2 = &Example::DoStuff2;
std::future<string> thread_two = std::async(std::launch::deferred, func_pointer_2, &EO);
thread_two.get(); //Launching upon calling
}
两个std::async
(std::launch::async
, std::launch::deferred
)和std::thread
与Qt完全兼容,并且在某些情况下可能是b在不同的操作系统环境中工作。
对于并行处理,见this。
+1:这包含在C++ 0x中,所以它也应该是面向未来的。 – rubenvb 2011-04-19 12:36:50