小编Jos*_*vis的帖子

C++ std :: thread无效使用void表达式

我的线程程序有问题.我知道问题是什么,我只是不知道如何解决它.我正在设置一个任意数量的线程来创建一个mandelbrot集,然后将其写入ppm文件.我正在使用std :: thread的向量并调用Mandelbrot类成员函数来执行线程.问题出在这里.我正在调用编译器不喜欢的void(void)函数.我如何解决这个问题,以便线程执行void(void)函数?我的代码如下:

main.cpp中

int main(int argc, char **argv) {
   const unsigned int WIDTH = 1366;
   const unsigned int HEIGHT = 768;
   int numThreads = 2;

   Mandelbrot mandelbrot(WIDTH, HEIGHT);

   if(argc > 1) {
      numThreads = atoi(argv[1]);
   }

   std::vector<std::thread> threads;

   for(int i = 0; i < numThreads; ++i) {
      threads.emplace_back(mandelbrot.mandelbrotsetThreaded());
   }

   for(int i = 0; i < numThreads; ++i) {
      threads[i].join();
   }

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

mandelbrot.cpp

void Mandelbrot::mandelbrotsetThreaded() {
   while(true) {
      int row = 0;
      {
         std::lock_guard<std::mutex> lock(row_mutex);
         row = cur_row++; …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading c++11 stdthread

0
推荐指数
1
解决办法
2690
查看次数

标签 统计

c++ ×1

c++11 ×1

multithreading ×1

stdthread ×1