建立 stdthread
在 C++中,使用 std::thread 類建立執行緒。執行緒是一個單獨的執行流程; 它類似於讓你的幫助者在你同時執行另一個任務時執行一項任務。當執行緒中的所有程式碼都被執行時,它就會終止。建立執行緒時,需要傳遞要在其上執行的內容。你可以傳遞給執行緒的一些事情:
- 免費功能
- 會員職能
- Functor 物件
- Lambda 表示式
自由函式示例 - 在單獨的執行緒上執行函式( 例項 ):
#include <iostream>
#include <thread>
void foo(int a)
{
std::cout << a << '\n';
}
int main()
{
// Create and execute the thread
std::thread thread(foo, 10); // foo is the function to execute, 10 is the
// argument to pass to it
// Keep going; the thread is executed separately
// Wait for the thread to finish; we stay here until it is done
thread.join();
return 0;
}
成員函式示例 - 在單獨的執行緒上執行成員函式( 例項 ):
#include <iostream>
#include <thread>
class Bar
{
public:
void foo(int a)
{
std::cout << a << '\n';
}
};
int main()
{
Bar bar;
// Create and execute the thread
std::thread thread(&Bar::foo, &bar, 10); // Pass 10 to member function
// The member function will be executed in a separate thread
// Wait for the thread to finish, this is a blocking operation
thread.join();
return 0;
}
Functor 物件示例( 例項 ):
#include <iostream>
#include <thread>
class Bar
{
public:
void operator()(int a)
{
std::cout << a << '\n';
}
};
int main()
{
Bar bar;
// Create and execute the thread
std::thread thread(bar, 10); // Pass 10 to functor object
// The functor object will be executed in a separate thread
// Wait for the thread to finish, this is a blocking operation
thread.join();
return 0;
}
Lambda 表示式示例( 例項 ):
#include <iostream>
#include <thread>
int main()
{
auto lambda = [](int a) { std::cout << a << '\n'; };
// Create and execute the thread
std::thread thread(lambda, 10); // Pass 10 to the lambda expression
// The lambda expression will be executed in a separate thread
// Wait for the thread to finish, this is a blocking operation
thread.join();
return 0;
}