C++11线程提升容器

C++11 thread boost container

本文关键字:线程 C++11      更新时间:2023-10-16

一个带有C++11线程的简单代码:

#include <iostream>
#include <thread>
#include <string>
using namespace std;
void thread_task(){
    std::cout<<"hello, here is thread task with state:"<<std::endl;
}
int main(int argc, char *argv[])
{
    std::thread t(thread_task);
    t.join();
    return 0;
}

编译:

g++ -pthread -std=c++11 -O0 -Wall -g -ggdb  main.cpp  -o main  -lboost_system -lboost_filesystem -lboost_serialization
./main can execute right!

--

g++ -pthread -std=c++11 -O0 -Wall -g -ggdb  main.cpp  -o main  -lboost_system -lboost_filesystem -lboost_serialization -lboost_container-mt
g++ -pthread -std=c++11 -O0 -Wall -g -ggdb  main.cpp  -o main  -lboost_system -lboost_filesystem -lboost_serialization -lboost_container 
./main all will have an error:
terminate called after throwing an instance of 'std::system_error'
  what():  Enable multithreading to use std::thread: Operation not permitted
[1]    29643 abort (core dumped)  ./main

为什么-lbox_container会导致此错误?当然,在我的代码示例中不需要boost_container。这不是一个例子。

这是的答案

g++ -Wl,--no-as-needed -pthread -std=c++11 -O0 -Wall -g -ggdb  main.cpp  -o main  -lboost_system -lboost_filesystem -lboost_serialization -lboost_container