如何利用c++11的新特性编写类成员线程函数并实现同步
程序员文章站
2024-03-01 18:15:34
...
之前在科大讯飞的面试中,面试官问了一个问题:如何编写一个线程函数,如何编写一个类中的成员函数(线程函数) 。
前面一个问题固然简单,但是后面一个当时就把我问懵逼了。从来没有试过在类内部写一个线程函数。回头我查看了一下网上的一些实例,发现给出的例子都太复杂了,于是我就想有没有更简单一些的方法,最后,参考c++11的新特性,我找到了一个比较简单的方法(顺便实现了不同类线程函数之间的同步):
废话不多说,下面上代码:
#include <iostream>
#include <thread>
#include <mutex>
class classTest {
public:
static void func1() {
while (1) {
lock_guard<mutex> locker(m_mtx);
Sleep(1000);
m_counter += 1;
if (m_counter < 100) {
cout << "func1 " << m_counter << endl;
}
else {
break;
}
}
}
static void func2() {
while (1) {
lock_guard<mutex> locker(m_mtx);
Sleep(1000);
m_counter += 1;
if (m_counter < 100) {
cout << "func2 " << m_counter << endl;
}
else {
break;
}
}
}
private:
static int m_counter;//声明
static mutex m_mtx;//声明
};
int classTest::m_counter = 0;//定义
mutex classTest::m_mtx;//定义
int main() {
thread td1(classTest::func1);
thread td2(classTest::func2);
td1.join();
td2.join();
//////////////////////////////////////////////////////////////////////////
system("pause");
return 0;
}
下面是运行结果:
上一篇: Python实现获取命令行输出结果的方法
下一篇: Mysql中存储UUID去除横线的方法