Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C的任务库?_C_Linux_Task Parallel Library - Fatal编程技术网

C的任务库?

C的任务库?,c,linux,task-parallel-library,C,Linux,Task Parallel Library,有C语言的任务库吗?我说的是并行任务库,因为它存在于C#或Java中。换句话说,对于Linux,我需要在pthread上建立一个抽象层。谢谢。除了Win32之外,最广泛使用的并行编程原语可能是由提供的 它们的级别相当低,但包含编写高效阻塞队列所需的所有内容,因此创建了一个线程池,其中包含了执行异步任务队列的工作线程池 另外还有一个代码库,您可以在Windows和POSIX系统上使用相同的代码库。请看一看。 特别是,您可能对OpenMP 3.0的功能感兴趣 但是,我建议您尝试使用其他“基本”结构(

有C语言的任务库吗?我说的是并行任务库,因为它存在于C#或Java中。换句话说,对于Linux,我需要在
pthread
上建立一个抽象层。谢谢。

除了Win32之外,最广泛使用的并行编程原语可能是由提供的

它们的级别相当低,但包含编写高效阻塞队列所需的所有内容,因此创建了一个线程池,其中包含了执行异步任务队列的工作线程池

另外还有一个代码库,您可以在Windows和POSIX系统上使用相同的代码库。

请看一看。 特别是,您可能对OpenMP 3.0的功能感兴趣


但是,我建议您尝试使用其他“基本”结构(如parallel for)来解决您的问题,因为它们使用起来更简单。

我一直想退出。是的,它是为OSX和块构建的,但是它们也有功能接口。我还没来得及看它,虽然我不确定它是否能满足你的所有需求。

TPL中的许多概念(任务、工作窃取调度程序等)都是受麻省理工学院一个非常成功的项目启发的。他们的高级框架(Cilk Plus)被英特尔收购,并集成到英特尔并行构建块中。您仍然可以使用Cilk作为一个无需某些高级功能的应用程序。好消息是


您应该尝试一下Cilk,因为它为C添加了另一层抽象,这使并行算法的表达变得很容易,但它与C非常接近,从而确保了良好的性能。

有一个学术项目,名为在C中实现偷功调度程序(在C预处理器AFAIK的大力帮助下)。可能值得一看,尽管它似乎没有得到积极发展。

谢谢。好的,我现在学到了一些新东西。是否有某种教程来构建这些辅助任务?我认为问题在于我不知道如何将任务安排到操作系统线程上。上面的第一个链接是教程。它包括一个使用条件变量的例子,它是构建阻塞队列的基本构建块,然后它成为所有其他的基本构建块。如果C++是可接受的,那么考虑英特尔线程构建块。