小编pol*_*pts的帖子

thread_local在C++ 11中意味着什么?

我对thread_localC++ 11中的描述感到困惑.我的理解是,每个线程在函数中都有唯一的局部变量副本.所有线程都可以访问全局/静态变量(可能使用锁进行同步访问).和thread_local变量的所有线程都是可见的,但只能由他们为其定义线程修改?这是对的吗?

c++ multithreading thread-local thread-local-storage c++11

109
推荐指数
3
解决办法
6万
查看次数

std :: this_thread :: yield()vs std :: this_thread :: sleep_for()?

我想知道C++ 11 std::this_thread::yield()和C++之间有什么区别std::this_thread::sleep_for()?以及如何决定使用什么?谢谢.

c++ multithreading c++11

40
推荐指数
2
解决办法
2万
查看次数

C++ atomic_flag查询状态

我使用C++ std::atomic_flag作为原子布尔标志.将标志设置为true或false不是问题,但如何查询标志的当前状态而不将其设置为某个值?我知道有方法' atomic_flag_clear'和' atomic_flag_set'.他们确实回馈了以前的状态,但也修改了当前的状态.有没有办法在不修改它的情况下查询标志状态,或者我是否必须使用完全成熟的' std::atomic<bool>'.

c++ multithreading atomic c++11

31
推荐指数
3
解决办法
8460
查看次数

如何使用boost :: optional

我想尝试使用boost::optional如下.

#include <iostream>
#include <string>

#include <boost/optional.hpp>

struct myClass
{
   int myInt;
   void setInt(int input) { myInt = input; }
   int  getInt(){return myInt; }
};

boost::optional<myClass> func(const std::string &str)
{
   boost::optional<myClass> value;
   if(str.length() > 5)
   {
      // If greater than 5 length string. Set value to 10
      value.get().setInt(10);
   }
   else if (str.length() < 5)
   {
      // Else set it to 0
      value.get().setInt(0);
   }
   else
   {
      // If it is 5 set the value to 5
      value.get().setInt(5);
   }

   return …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-optional

27
推荐指数
3
解决办法
8万
查看次数

具有std :: atomic成员变量的类的复制构造函数/赋值运算符出错

我有一个类似下面的课程.

#include <atomic>

static const long  myValue = 0;

class Sequence
{

public:

    Sequence(long initial_value = myValue) : value_(initial_value) {}


private:

     std::atomic<long> value_;
};

int main()
{
         Sequence firstSequence;
         Sequence secondSequence = firstSequence;
         return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到这样的编译错误,

test.cpp:21:36: error: use of deleted function ‘Sequence::Sequence(const Sequence&)’
test.cpp:5:7: error: ‘Sequence::Sequence(const Sequence&)’ is implicitly deleted because the default definition would be ill-formed:
test.cpp:5:7: error: use of deleted function ‘std::atomic<long int>::atomic(const std::atomic<long int>&)’
Run Code Online (Sandbox Code Playgroud)

这是默认的复制构造函数,赋值opertaor在这种情况下不起作用吗?

PS:我使用的是gcc 4.6.3版

c++ multithreading atomic c++11

22
推荐指数
4
解决办法
1万
查看次数

boost :: filesystem :: create_directories()创建的目录不能立即访问?

boost::filesystem::create_directories()用来创建新目录.当我在创建后不久尝试访问这些目录时,我收到一条错误消息:没有这样的目录.但如果我在创建目录后睡了一会儿一切都很好(我没有得到错误).此外,我尝试使用fsync()sync()创建目录后,但它没有任何区别.我在ext4和xfs文件系统上测试它,我的boost版本是boost 1.44

我的问题是

  1. 是否boost::create_directories()立即创建目录?或者有可能出现问题吗?
  2. 还有,sync()fsync()保证在ext4/xfs上将所有内容刷新到光盘上吗?

sync fsync boost-filesystem ext4 xfs

11
推荐指数
0
解决办法
1072
查看次数

boost :: bind,boost :: lambda :: bind和boost :: phoenix :: bind之间的区别

我试图理解这些不同绑定方法之间的区别.boost :: bind和boost :: phoenix :: bind也有类似的问题

但是,如果有人能用例子来解释这一点,那就太好了.也就是说,boost :: phoenix是boost :: bind,booost :: lambda库的超集吗?

c++ boost boost-bind boost-lambda boost-phoenix

11
推荐指数
1
解决办法
1740
查看次数

boost :: range_iterator和boost :: iterator_range混乱

我一直在浏览boost::range图书馆并注意到boost :: range_iterator和boost::iterator_range.我在这里对这些术语感到困惑.请问有谁可以解释两者之间有什么区别以及什么时候使用什么?此外,如果您能指出示例示例,除了文档之外,还可以使用增强范围库来了解更多相关信息.谢谢

c++ boost boost-range

11
推荐指数
1
解决办法
9658
查看次数

C++ 11 constexpr过时的模板元编程?

据我了解,constexpr与模板元编程不同,图灵不是完整的,所以我相信这些不一样.那么问题是constexpr模板元编程在多大程度上已经过时了?

c++ templates constexpr c++11

10
推荐指数
1
解决办法
2085
查看次数

如何在c ++中初始化线程局部变量?

可能重复:
gcc中的C++ 11 thread_local - 替代方法
有没有办法使用GCC的__thread完全模拟thread_local?

我想使用c ++ 11 thread_local来创建和使用thread_local变量,但由于gcc尚不支持,我使用的是gcc特有的__thread.我声明变量的方式是

myClass
{
public:

  static __thread int64_t m_minInt;

};
__thread int64_t myClass::m_minInt = 100;
Run Code Online (Sandbox Code Playgroud)

当我编译它时,我得到一个错误

error: ‘myClass::minInt’ is thread-local and so cannot be dynamically initialized
Run Code Online (Sandbox Code Playgroud)

如何正确地做到这一点?

PS:gcc版本:4.6.3

c++ multithreading gcc thread-local thread-local-storage

9
推荐指数
1
解决办法
8946
查看次数