gpt4 book ai didi

c++ - 如何调试此 C++11 线程代码?

转载 作者:行者123 更新时间:2023-11-28 01:49:22 26 4
gpt4 key购买 nike

<分区>

我最近开始使用 C++11 编写代码。由于我了解理论部分,所以我想到了通过编写代码进行试验。这是我的第一个 C++ 程序,它的作用是:

我正在创建一个具有线程类型成员和 2 个成员函数的类,其中一个是线程函数,另一个是启动该线程函数的函数。但我面临以下错误。我做了很多谷歌搜索,但没有一个有帮助。我想生成 2 个“runThread”线程,它们将更新 counter。我知道 counter 未同步,但一旦此错误得到解决,我将使用 std::atomic 变量来处理它。

#include <iostream>
#include <stdio.h>
#include <thread>
#include <vector>

class Application {
public:
Application(int val): counter(val) { printf("value is %d\n", counter); }
void start();
void print();
private:
void runThread();
int counter;
std::vector<std::thread> thr;
};

void Application::runThread() {
for(int i=0;1<50;i++)
counter++;
}

void Application::start() {
//std::thread t1(runThread);
//std::thread t2(runThread);
//this->thr.emplace_back(std::thread(&Application::runThread, this)); Tried this, but dint work
//this->thr.emplace_back(std::thread(&Application::runThread, this));Tried this, but dint work
thr.emplace_back(std::thread(runThread));
thr.emplace_back(std::thread(runThread));
}

void Application::print() {
printf("Counter = %d\n", counter);
}

int main(void)
{
int a;
Application app(300);
app.start();
std::cin >>a;
}

这是错误

../main.cpp: In member function ‘void Application::start()’:
../main.cpp:27:40: error: invalid use of non-static member function
thr.emplace_back(std::thread(runThread));
^
../main.cpp:28:40: error: invalid use of non-static member function
thr.emplace_back(std::thread(runThread));
^
subdir.mk:18: recipe for target 'main.o' failed
make: *** [main.o] Error 1

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com