小编And*_*ndy的帖子

这对const来说是不可变的吗?

基本上,我有以下情况.注意:void*用于表示任意数据,它在实际应用程序中强类型.

class A
{
public:
   //uses intermediate buffer but doesn't change outward behavior
   //intermediate buffer is expensive to fill
   void foo(void* input_data);

   //uses intermediate buffer and DOES explicitly change something internally
   //intermediate buffer is expensive to fill
   void bar(void* input_data);

   //if input_data hasn't changed since foo, we can totally reuse what happened in foo
   //I cannot check if the data is equal quickly, so I allow the user to pass in the
   //assertion (put the honerous on them, …
Run Code Online (Sandbox Code Playgroud)

c++ const mutable

8
推荐指数
1
解决办法
560
查看次数

为什么InterruptedException是一个经过检查的异常?

在Java中处理线程时,处理InterruptedException似乎是我身边的一个特殊刺.我很欣赏它在我的线程被终止时被抛出的事实,因此我有机会进行清理.对我来说似乎很奇怪的是,这不是一个未经检查的例外.

这会产生以下问题:a)如果我想在我的线程应用程序中使用现有框架,我将被迫将其转换为框架接口接受的异常.因此,框架通常会误解它,而不是按照它应该清理或传播它.

b)除非为堆栈中的每个调用严格声明InterruptedException(并且通常不是因为a),否则很难干净地关闭.

如果取消选中InterruptedException,那么它似乎会有更高的可能性,并且通常会导致线程和应用程序的干净关闭.为什么不呢?

java multithreading shutdown

7
推荐指数
1
解决办法
3207
查看次数

GCC C++ 11条件变量等待内部

我正在寻找一个我们的错误,一些凌乱的线程/条件变量类被更新为使用C++ 11线程.在狩猎过程中,我在GCC代码库中遇到了以下内容:

  template<typename _Lock>
  void
  wait(_Lock& __lock)
  {
    unique_lock<mutex> __my_lock(_M_mutex);
    _Unlock<_Lock> __unlock(__lock);
    // _M_mutex must be unlocked before re-locking __lock so move
    // ownership of _M_mutex lock to an object with shorter lifetime.
    unique_lock<mutex> __my_lock2(std::move(__my_lock));
    _M_cond.wait(__my_lock2);
  }
Run Code Online (Sandbox Code Playgroud)

尽管有评论,但我很难理解移动构造函数的目的是__my_lock2.为什么__my_lock在这里移动到__my_lock2?

c++ multithreading c++11

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

C++ Boost中的线程数组

我正在尝试使用线程创建一个数组.我的代码看起来像这样:

boost::thread threads[10];

   for(int i = 0; i < 10; i++){
         client c(io_services[i], "www.boost.org", "/");

         threads[i] ( boost::bind(workerFunc, i) );

  }
Run Code Online (Sandbox Code Playgroud)

我收到编译错误:

error: no match for call to ‘(boost::thread) (boost::_bi::bind_t<void, void (*)(int), boost::_bi::list1<boost::_bi::value<int> > >)’
       threads[i] ( boost::bind(workerFunc, i) );
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚我的代码中需要更改的内容.任何帮助将不胜感激.

c++ multithreading boost stdthread

2
推荐指数
1
解决办法
1077
查看次数

自我参考模板

我正在努力让以下工作:

template< typename T >
class MyTemplate {
public:

    void myMethod( const MyTemplate< typename U > & )
    {
        return;
    };

};
Run Code Online (Sandbox Code Playgroud)

其中myMethod参数MyTemplate< typename U >指示使用不同类型实例化的类.这甚至可能吗?

c++

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

标签 统计

c++ ×4

multithreading ×3

boost ×1

c++11 ×1

const ×1

java ×1

mutable ×1

shutdown ×1

stdthread ×1