线程传染媒介在C++的

iNu*_*ste 1 c++ multithreading vector

我正在尝试使用线程向量.我将收到一个int作为参数,这将是我将要创建的线程数.

我试过这样的事情:

#include <iostream>
#include <thread>
#include <vector>

void credo()
{
    std::cout << "threads" << std::endl;
}

void threads_creation()
{
    int i;
    std::vector<std::thread> threads_tab;
    i = 0;
    while(i < 2)
    {
        threads_tab.push_back(std::thread(credo));
        i++;
    }
}

int main()
{
    threads_creation();
    return (0);
}
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个编译错误:

/tmp/ccouS4PY.o: In function `std::thread::thread<void (&)()>(void (&)())':
threads.cpp:(.text._ZNSt6threadC2IRFvvEJEEEOT_DpOT0_[_ZNSt6threadC5IRFvvEJEEEOT_DpOT0_]+0x21): undefined reference to `pthread_create'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

通过使用以下命令进行编译:

g++ -W -Wall -Werror -Wextra threads.cpp
Run Code Online (Sandbox Code Playgroud)

这有什么不对?

BTo*_*TKD 5

std :: thread类在Linux中使用pthread,因此您需要-pthread在命令中添加编译器标志;

g++ -W -Wall -Werror -Wextra -pthread threads.cpp
Run Code Online (Sandbox Code Playgroud)