编辑:该问题与标记为重复的问题无关。错误是完全不同的,让我感到惊讶的是,那些真正了解这些东西的人,将其标记为重复,好像他们想要的只是获得积分......
EDIT2:问题很清楚,甚至在标题中。我在这里重复一遍,为了更方便......
Are there any flags should you use for the functions of the program mentioned below?
(You only need to check the headers) For example thread needs -pthread flag.
我是Linux C ++编程的初学者,也是多线程的初学者。我试图找出互斥体究竟做了什么并在其上练习,因此我去here并且我想在那里编译程序。问题是,我不知道我应该在编译命令中使用哪些标志。我正在用命令编译它:
gcc <project_name> -o <executable_name> -std=c++14 -pthread
但我收到一堆错误(编译器不识别chrono,mutex等)。我应该在编译命令中使用哪些标志?
我正在尝试使用gcc 6.2.0在Ubuntu 16.04 LTS(来自Windows 10的虚拟机)上编译它。以下是代码,为了您的方便:
#include <iostream>
#include <map>
#include <string>
#include <chrono>
#include <thread>
#include <mutex>
std::map<std::string, std::string> g_pages;
std::mutex g_pages_mutex;
void save_page(const std::string &url)
{
// simulate a long page fetch
std::this_thread::sleep_for(std::chrono::seconds(2));
std::string result = "fake content";
std::lock_guard<std::mutex> guard(g_pages_mutex);
g_pages[url] = result;
}
int main()
{
std::thread t1(save_page, "http://foo");
std::thread t2(save_page, "http://bar");
t1.join();
t2.join();
// safe to access g_pages without lock now, as the threads are joined
for (const auto &pair : g_pages) {
std::cout << pair.first << " => " << pair.second << '\n';
}
}