C++ thread简单使用

习惯了用Qt的各种封装,标准C++的好多用法都模糊了,在此简单记录下C++下thread的使用。

C++ thread简单使用

语言不好表述,直接上段示例代码简单明了

  • 普通函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <thread>

void th_fun1()
{
std::cout << "th_fun1..." << std::endl;
while (1);
}

void th_fun2(int a)
{
std::cout << "th_fun2..." << a << std::endl;
while (1);
}

int main(int argc, char *argv[])
{
// 无参数
std::thread t1(th_fun1);
int i = 99;
// 有参数
std::thread t2(th_fun2, i);
t1.join();
t2.join();
while (1);

return 0;
}

运行结果如下:

  • 类成员函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Test.h
#ifndef TEST_H
#define TEST_H

#include <iostream>
class Test
{
public:
Test();
~Test();
void test_fun();
void test_fun1(int a);
};
#endif //TEST_H
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//Test.cpp
#include "Test.h"

Test::Test()
{
}


Test::~Test()
{
}

void Test::test_fun()
{
std::cout << "Test::test_fun()..." << std::endl;
while (1);
}

void Test::test_fun1(int a)
{
std::cout << "Test::test_fun(int a): " << a << std::endl;
while (1);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//main
#include <iostream>
#include <thread>

#include "Test.h"

int main(int argc, char *argv[])
{
Test test;
// 无参数
std::thread t1(&Test::test_fun, &test);
int i = 99;
// 有参数
std::thread t2(&Test::test_fun1, &test, i);
t1.join();
t2.join();
while (1);

return 0;
}

运行结果如下:

lasyman wechat
-------------本文结束感谢您的阅读-------------