如何将线程ID传递给多线程函数

时间:2019-05-15 17:04:10

标签: c++ multithreading parameter-passing stdthread

我正在尝试学习C ++中图像处理的多线程基础知识。我来自不同的API背景,在该背景中我经常这样做,因此我尝试使用std :: thread函数将代码移植到C ++。这是我当前的伪代码:

static const int num_threads=4;

void FilterImage (int x1, int x2, int x3, int threadNr) {
     // output defined...
     // Every thread calculates a different line
     for (int y = 0 + threadNr; y < output->height; y += num_threads) {
         // Horizontal lines
         for (int x = 0; x < output->width; x++) {
             // Do Stuff...
         }
     }
}

int main() {
    std::thread t[num_threads];
    int param1, param2, param3;
    int i;

    for (i = 0; i < num_threads; i++)
        t[i] = std::thread(FilterImage, param1, param2, param3, i);

    for (i = 0; i < num_threads; i++)
        t[i].join;
}

但是,我无法将i(线程ID)作为参数传递给函数。 Visual Studio不允许我。任何有关我做错了什么以及如何正确传递线程ID的指导都将受到赞赏。

我希望每个线程都处理一条图像线。

谢谢。

0 个答案:

没有答案