C++11引入了一个新的线程库,可以通过头文件来包含相关的类和函数服务器托管网。下面是C++11线程库的一些基本用法:
1.创建线程
#include
#include
void myFunction()
{
std::cout "This is myFunction()" std::endl;
}
int main()
{
std::thread t(myFunction); // 创建一个新的线程,并在该线程中执行myFunction函数
t.join(); // 等待线程t执行完毕
return 0;
}
运行结果:
This is myFunction()
2.传递参数给线程函数
#include
#include
void printMessage(const std::string &message)
{
std::cout "Message: " message std::endl;
}
int main()
{
std::string message = "Hello, world!";
std::thread t(printMessage, message); // 创建一个新的线程,并将message作为参数传递给printMessage函数
t.join(); // 等待线程t执行完毕
return 0;
}
运行结果:
Message: Hello, world!
3.线程的运行状态和主线程的同步
#include
#include
void myFunction()
{
std::this_thread::sleep_for(std::chrono::seconds(2)); // 休眠2秒
std::cout "This is myFunction()" std::endl;
}
int main()
{
std::thread t(myFunction);
if (t.joinable())
{
std::cout "Thread is running" std::endl;
t.join(); // 等待线程t执行完毕
}
std::cout "Thread has completed" std::endl;
return 0;
}
运行结果:
Thread is running
This is myFunction()
Thread has completed
4.线程的并发执行
#include
#include
void printNumber(int num)
{
for (int i = 0; i num; i++)
{
std::cout i " ";
}
std::cout "n";
}
int main()
{
std::thread t1(printNumber, 5服务器托管网); // 创建一个新的线程,并打印数字0到4
std::thread t2(printNumber, 5); // 创建另一个新的线程,并打印数字0到4
t1.join(); // 等待线程t1执行完毕
t2.join(); // 等待线程t2执行完毕
return 0;
}
运行结果:
00 1 2 3 4
1 2 3 4
注意事项:
- 在使用线程库时,需要确保程序正常退出前,所有线程已经执行完毕并调用了join函数。
- C++11线程库提供了更多的功能,如互斥量、条件变量、原子操作等,用于实现线程间的同步和通信。可以通过、和头文件来包含相关的类和函数。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: 2023-06-15:说一说Redis的Key和Value的数据结构组织?
2023-06-15:说一说Redis的Key和Value的数据结构组织? 答案2023-06-15: 全局哈希表 Redis使用哈希表作为保存键值对的数据结构,通过哈希函数将Key映射为哈希表中的一个索引位置,使得Key-Value可以在O(1)时间复杂度内…