std::thread należy rozpatrywać jako nisko poziomowy (low level) prymityw. std::thread jest tylko budulcem do tworzenia wysoko pozimowych rozwiązań, tak jak delete, jest budulcem, dzięki któremu może istnieć std::unique_ptr. W momencie wprowadzania tego rozwiązania komitetowi standaryzacyjnemu po prostu zabrakło czasu, na coś więcej. Tak jak należy wystrzegać się delete, w produkcyjnym kodzie, tak samo powinno być traktowane std::thread. Być może boost::strict_scoped_thread będzie dobrym rozwiązaniem.
#include <iostream> #include <thread> #include <boost/thread/scoped_thread.hpp> void f() { std::cout << "Hello" << std::endl; } int main() { std::thread t1(f); t1.join(); boost::strict_scoped_thread<> t2((boost::thread(f))); // podwójne nawiasy return 0; }I jeszcze konfiguracja CMakeLists.txt
project(cpp_thread) cmake_minimum_required(VERSION 2.8) aux_source_directory(. SRC_LIST) add_executable(${PROJECT_NAME} ${SRC_LIST}) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") find_package(Boost COMPONENTS system thread REQUIRED) target_link_libraries(${PROJECT_NAME} pthread ${Boost_SYSTEM_LIBRARY} ${Boost_THREAD_LIBRARY} )
Brak komentarzy:
Prześlij komentarz