C++ 11 多线程的管理是基于 std::thread 类的, 该类提供了线程的管理 ,创建, 启动 , 执行等线程基本属性。
创建线程:
#include <iostream> #include <thread>
#include <mutex>
#include <condition_variable>
using namespace std;
void print(void ) //print()函数是该次线程入口函数,作用等同于我们理解的主线程中的main()函数
{
cout << "Hello World"<<endl;
}
int main( )
{
std::thread t1(print); //创建线程 t1 并启动该线程 ,
t1.join(); //此操作将在join()函数调用处开始阻塞线程,直到创建的线程 t1 执行完成并返回。 //(入口函数print()执行完成返回就是该线程结束
}
分离线程:
#include <iostream> #include <thread>
#include <mutex>
#include <condition_variable>
using namespace std;
void print(void ) //print()函数是该次线程入口函数,作用等同于我们理解的主线程中的main()函数
{
cout << "Hello World"<<endl;
}
int main( )
{
std::thread t1(print); //创建线程 t1 并启动该线程 ,
t1.detach(); //线程分离操作,线程调用detach()函数代表该线程将自动的置为后台运行 , 主线程不等待与join()函数相反。
}
线程传入参数:
#include <iostream> #include <thread>
#include <mutex>
#include <condition_variable>
using namespace std;
int numArray[100];
void initArray(int *pArray , int len )
{
for( int i = 0 ; i< len ; i++ )
{
pArray[i] = i+1;
}
}
void print(int *pArray , int len )
{
for( int i = 0 ; i< len ; i++ )
{
cout << pArray[i]<<endl;
}
}
int main( )
{
std::thread t1(initArray , numArray ,100);
std::thread t2(print ,numArray, 100);
t1.join();
t2.join();
}