我不需要正确终止线程,或使其响应"终止"命令.我有兴趣使用纯C++ 11强制终止线程.
我的程序经历了这样的循环:
...
while(1){
read(sockfd,buf,sizeof(buf));
...
}
Run Code Online (Sandbox Code Playgroud)
read函数在等待输入时阻塞,这恰好来自套接字.我想处理SIGINT并且基本上告诉它在读取时停止读取函数然后调用任意函数.做这个的最好方式是什么?
std::atomic_flag在类构造函数中初始化一个安全的方法是什么?
这个问题好像在问我要问的同一个问题 - 除了这里提问者抱怨编译问题.
我的问题涉及C++标准本身.根据此站点,std::atomic_flag未指定初始化using构造函数初始化程序语法.
std::atomic_flag static_flag = ATOMIC_FLAG_INIT; // static initialization,
// guaranteed to be available during dynamic initialization of static objects.
int main()
{
std::atomic_flag automatic_flag = ATOMIC_FLAG_INIT; // guaranteed to work
// std::atomic_flag another_flag(ATOMIC_FLAG_INIT); // unspecified
}
Run Code Online (Sandbox Code Playgroud)
这些信息是否正确?如果是这样,我认为:
struct Foo
{
Foo() : flag(ATOMIC_FLAG_INIT)
{ }
std::atomic_flag flag;
};
Run Code Online (Sandbox Code Playgroud)
......也没有说明.那么,这是否意味着我们不能使用std::atomic_flag作为类的成员变量?或者如果我们std::atomic_flag::clear()从类构造函数中简单调用它是否安全?