小编use*_*317的帖子

将lambdas传递给std :: thread并调用类方法

我在使用std :: thread和lambdas时遇到了一些麻烦.我有一个方法TheMethod我应该使用std :: thread来并行化对同一个类中的方法的一些函数调用.

我定义了一个lambda函数,并尝试将它传递给我创建的std :: thread实例:

auto functor = 
   [this](const Cursor& c, size_t& result) ->void {result = classMethod(c);};

size_t a;
Cursor cursor = someCursor();

std::thread t1(functor, cursor, a);

t1.join();
Run Code Online (Sandbox Code Playgroud)

不幸的是,编译器给了我:

  /usr/include/c++/4.8/functional:1697:61: error: no type named ‘type’ in ‘class std::result_of<TheMethod...
Run Code Online (Sandbox Code Playgroud)

我在lambda定义中尝试了很多组合,并且调用了std :: thread构造函数,但是我总是得到相同的错误.包含了线程库,我也链接了pthread.

谢谢你的提示!

c++ lambda multithreading c++11

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

使用SSE的水平最小值和最大值

我有一个使用SSE的功能来做很多事情,并且分析器向我显示我用来计算水平最小值和最大值的代码部分大部分时间消耗.

我一直在使用以下实现作为最小例子:

static inline int16_t hMin(__m128i buffer) {
    buffer = _mm_min_epi8(buffer, _mm_shuffle_epi8(buffer, m1));
    buffer = _mm_min_epi8(buffer, _mm_shuffle_epi8(buffer, m2));
    buffer = _mm_min_epi8(buffer, _mm_shuffle_epi8(buffer, m3));
    buffer = _mm_min_epi8(buffer, _mm_shuffle_epi8(buffer, m4));
    return ((int8_t*) ((void *) &buffer))[0];
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我需要计算16个1字节整数的最小值和最大值.

任何好的建议都非常感谢:)

谢谢

c++ sse max minimum avx

11
推荐指数
2
解决办法
5804
查看次数

设置 SSE 寄存器的最后或前 n 位

如何创建__m128i具有n最高有效位集的(在整个向量中)?我需要它来屏蔽与计算相关的缓冲区部分。如果可能,解决方案应该没有分支,但这似乎很难实现

我怎样才能做到这一点 ?

c++ x86 sse simd intrinsics

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

用LFS初始化裸git存储库

我想在支持git LFS协议的外部驱动器(git init --bare reponame)上初始化几个本地git存储库。即克隆这些文件后,我希望能够通过LFS跟踪大文件(然后,文件的版本应存储在外部驱动器上)

这样做没有任何其他步骤是行不通的(即克隆空仓库,使用git LFS跟踪大文件,然后尝试推送到远程):

Git LFS: (0 of 122 files) 0 B / 157.56 MB
http: Post /media/me/bigdrive/git_repos/coding.git/info/lfs/objects/batch:
      unsupported protocol scheme ""
http: Post /media/me/bigdrive/git_repos/coding.git/info/lfs/objects/batch:
      unsupported protocol scheme ""
error: failed to push some refs to '/media/me/bigdrive/git_repos/coding'`
Run Code Online (Sandbox Code Playgroud)

我找不到有关如何执行此操作的指南,LFS手册页似乎没有提供解决方案。GitHub / BitBucket指南仅说明了如何在本地存储库上执行此操作,然后在其服务器上推送到正确配置的git存储库

感谢任何帮助,谢谢!

git github git-lfs

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

C++中的std :: async和lambda函数没有关联状态

我试图通过使用async在我的程序中获得更好的性能,只要这很方便.我的程序编译,但每次我使用包含异步调用的函数时,我都会收到以下错误:

C++ exception with description "No associated state"
Run Code Online (Sandbox Code Playgroud)

我试图用lambda调用异步的方式如下:

auto f = [this](const Cursor& c){ return this->getAbsIndex(c); };
auto nodeAbsIndex = std::async(f,node); // node is const Cursor&
auto otherAbsIndex = std::async(f,other); // other too

size_t from = std::min(nodeAbsIndex.get(), otherAbsIndex.get());
size_t to = std::max(nodeAbsIndex.get(), otherAbsIndex.get());
Run Code Online (Sandbox Code Playgroud)

呼叫功能的签名如下:

uint64_t getAbsIndex(const Cursor& c) const
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?谢谢你的任何提示!迭戈

c++ lambda asynchronous exception c++11

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

标签 统计

c++ ×4

c++11 ×2

lambda ×2

sse ×2

asynchronous ×1

avx ×1

exception ×1

git ×1

git-lfs ×1

github ×1

intrinsics ×1

max ×1

minimum ×1

multithreading ×1

simd ×1

x86 ×1