Ошибка при создании std::thread

Код

#ifndef TASKLIST_HPP
#define TASKLIST_HPP

    #include <iostream>
    #include <string>
    #include <fstream>
    #include <chrono>
    #include <thread>
    #include <mutex>
    #include <vector>
    #include <unordered_map>
    #include <unistd.h>

    #include "../Helpers/Variables.hpp"
    #include "../Helpers/Enums.hpp"
    #include "../Helpers/FileMethods.hpp"
    #include "../Helpers/DebuggerHelper.hpp"

namespace TaskList {

    void StartAlgos(/*bool* isRun, std::vector<std::pair<BYTE, std::vector<BYTE>*>>* list, TaskList* tl*/);

    class TaskList{
    private:

        bool isRun = false;

        std::vector<std::pair<BYTE, std::vector<BYTE>*>> list;
        std::unordered_map<Enums::settings, std::string>* settings;

    public:

        TaskList(std::unordered_map<Enums::settings, std::string>* settingsmap){
            settings = settingsmap;
        }

        void Push(std::vector<BYTE>* block){
            lu threads = std::stoul((*settings)[Enums::settings::threadlimit]);
            while (list.size() >= threads) WaitQueue(); // You shouldn't use more than (cores+1) than you have

            listMutex.lock();
            list.push_back(std::make_pair(0, block));
            listMutex.unlock();

            std::thread ff(StartAlgos);
        }

        void WaitQueue(){
            std::this_thread::sleep_for(std::chrono::milliseconds(250));
        }

        ~TaskList() {}

        std::vector<std::thread> threadList;
        std::mutex listMutex;

    };

    void StartAlgos(/*bool* isRun, std::vector<std::pair<BYTE, std::vector<BYTE>*>>* list, TaskList* tl*/){


    }    
}

#endif // TASKLIST_HPP

Ошибки при компиляции: введите сюда описание изображения

Никак не могу понять - что я сделал не так.
Можете подсказать - в чем ошибка?


Ответы (1 шт):

Автор решения: Rivand

Линковщик не может найти библиотеку pthread (она работает под капотом std::thread если вы собираете под linux). Вам нужно в вашей системе сборки подключить эту библиотеку.

Если ваша система сборки cmake то добавьте в основной скрипт сборки строку find_package (Threads), и в вызов target_link_libraries добавьте переменную ${CMAKE_THREAD_LIBS_INIT}.

→ Ссылка