小编hea*_*der的帖子

Threadpool实现:condition_variables vs. yield()

我尝试在C++中开发一个线程池,我想知道在工作线程的主循环中产生()线程或者在条件变量上等待是否更好:

void worker_thread( void )
{
    // this is more or less pseudocode
    while( !done )
    {

        if( task_available ) 
             run_task();
        else
            std::this_thread::yield();
    }
}
Run Code Online (Sandbox Code Playgroud)

void worker_thread( void )
{
    // this is more or less pseudocode

    std::unique_lock< std::mutex > lk( mutex_ );
    while( !done )
    {

        if( task_available ) 
             run_task();
        else
            condition_.wait( lk );
    }
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?两个版本之间是否会有任何性能差异?

c++ multithreading stl std condition-variable

12
推荐指数
2
解决办法
1916
查看次数

通过价值或通用参考

我想开发一个带有类型擦除的小型多态类,我想知道哪个版本的模板化构造函数更好,应该使用.

我们可以通过价值:

class A
{
    ...
    template< typename T >
    A( T t ) { /* create the underlying model via std::move */ }
    ...
};
Run Code Online (Sandbox Code Playgroud)

或者我们可以使用通用参考:

class A
{
    ...
    template< typename T >
    A( T &&t ) { /* create the underlying model via std::forward */ }
    ...
};
Run Code Online (Sandbox Code Playgroud)

(如果对于T不是类本身并且未复制类的情况,则必须启用通用引用).有任何想法吗?这两个版本看起来都和我一样.

c++ pass-by-value pass-by-rvalue-reference forwarding-reference

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

不能在amazon emr中使用apache flink

我无法在亚马逊EMR中开始Apache Flink的纱线会议.我得到的错误信息是

$ tar xvfj flink-0.9.0-bin-hadoop26.tgz
$ cd flink-0.9.0
$ ./bin/yarn-session.sh -n 4 -jm 1024 -tm 4096
...
Diagnostics: File file:/home/hadoop/.flink/application_1439466798234_0008/flink-conf.yaml does not exist
java.io.FileNotFoundException: File file:/home/hadoop/.flink/application_1439466798234_0008/flink-conf.yaml does not exist
...
Run Code Online (Sandbox Code Playgroud)

我正在使用Flink verision 0.9和Amazons Hadoop 4.0.0版.任何想法或提示?

完整的日志可以在这里找到:https://gist.github.com/headmyshoulder/48279f06c1850c62c28c

amazon-emr emr hadoop-yarn apache-flink

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

Hadoop中的分布式文件处理?

我有大量的压缩tar文件,其中每个tar本身包含几个文件.我想提取这些文件,我想使用hadoop或类似的技术来加速处理.有这种问题的工具吗?据我所知,hadoop和类似的框架如spark或flink不直接使用文件,也不会直接访问文件系统.我还想对提取的文件进行一些基本的重命名,并将它们移动到适当的目录中.

我可以想象一个解决方案,其中一个创建所有tar文件的列表.然后将此列表传递给映射器,并且单个映射器从列表中提取一个文件.这是一种合理的方法吗?

hadoop batch-processing apache-spark apache-flink

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

提升几何交集给出奇怪的结果

我想使用带有直线和多边形的boost几何的交点函数.我希望交叉点是多边形内部线条的一部分.

不幸的是,boost几何体返回位于多边形外部的线条部分.这是boost几何中的错误还是我的代码有问题?

#include <boost/geometry/core/cs.hpp>
#include <boost/geometry/geometries/point.hpp>
#include <boost/geometry/geometries/ring.hpp>
#include <boost/geometry/geometries/box.hpp>
#include <boost/geometry/geometries/segment.hpp>
#include <boost/geometry/geometries/linestring.hpp>
#include <boost/geometry/multi/geometries/multi_point.hpp>
#include <boost/geometry/multi/geometries/multi_linestring.hpp>
#include <boost/geometry/geometry.hpp>
#include <boost/geometry/geometries/geometries.hpp>
#include <boost/geometry/algorithms/intersection.hpp>

namespace bg = boost::geometry;

using value_type = double ;
using cs_type = bg::cs::cartesian;
using point_type = bg::model::point< value_type , 2 , cs_type >;
using polygon_type = bg::model::ring< point_type > ;
using line_string_type = bg::model::linestring< point_type >;
using multi_line_type = bg::model::multi_linestring< line_string_type >;

int main( int argc , char *argv[] )
{
    line_string_type line;
    line.push_back( point_type { …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-geometry

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

postgresql加载sql脚本

我想从另一个sql文件加载并执行sql文件,但不要使用语法.这可能吗?详细地说,我有一个文件install_tables.sql,它应该加载一个文件tables_definition.sql.

postgresql

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