在c ++中创建线程的最简单方法是什么?我想创建一个使用已声明的方法来运行。类似的东西:
void task1(){
cout << "Thread started";
}
thread t1 = thread(task1());
我想我想创建一个不需要下载任何库的线程,并且我的编译器很可能能够编译。我想回答的一个重要问题是,什么是c ++ 11?它是一个完全不同的语言,还是一堆图书馆?
答案 0 :(得分:7)
C ++ 11有线程库。一个非常简单的例子是:
#include <iostream>
#include <thread>
void task1()
{
std::cout<<"Thread started\n";
}
int main()
{
std::thread t1(task1);
t.join();
}
答案 1 :(得分:2)
如果你不能使用C ++ 11,那么它取决于你编程的内容。以下“尽可能简单”的线程示例使用CreateThread函数以非托管Win32代码编写:
#include <Windows.h>
#include <tchar.h>
#include <iostream>
using namespace std;
DWORD WINAPI ThreadFunction(LPVOID lpParam) {
WORD numSeconds = 0;
for (;;) {
Sleep(1000);
cout << numSeconds++ << " seconds elapsed in child thread!" << endl;
}
return 0;
}
int _tmain(int argc, _TCHAR* argv[]) {
HANDLE hThread;
DWORD threadID;
WORD numSeconds = 0;
cout << "Hello world" << endl;
hThread = CreateThread(NULL, 0, ThreadFunction, NULL, 0, &threadID);
Sleep(500);
for (;;) {
cout << numSeconds++ << " seconds elapsed in main thread!" << endl;
Sleep(1000);
}
return 0;
}
如果使用此方法,请记住传递给CreateThread的函数指针必须具有签名:
DWORD ThreadFuncion(LPVOID lpParameter);
您可以在MSDN上找到该签名的说明。
答案 2 :(得分:0)