在C中使用Intel TBB

arunmoezhi

我正在尝试在C语言中使用Intel TBB。我为TBB获得的所有文档都针对C ++。TBB是否可以与普通C一起使用?如果是,我如何定义原子整数。在下面的代码中,我尝试使用模板atomic<int> counter(我知道这在C语言中不起作用)。有没有办法解决这个问题?

#include<pthread.h>
#include<stdio.h>
#include<tbb/atomic.h>

#define NUM_OF_THREADS 16

atomic<int> counter;

void *simpleCounter(void *threadId)
{
    int i;
    for(i=0;i<256;i++)
    {
        counter.fetch_and_add(1);
    }
    printf("T%ld \t Counter %d\n", (long) threadId, counter);
    pthread_exit(NULL);
}

int main(int argc, char *argv[])
{
    counter=0;
    pthread_t threadArray[NUM_OF_THREADS];
    long i;
    for(i=0;i<NUM_OF_THREADS;i++)
    {
        pthread_create(&threadArray[i], NULL, simpleCounter, (void *)i);
    }
    pthread_exit(NULL);
}


-bash-4.1$  g++ simpleCounter.c -I$TBB_INCLUDE -Wl,-rpath,$TBB_LIBRARY_RELEASE -L$TBB_LIBRARY_RELEASE -ltbb
simpleCounter.c:7: error: expected constructor, destructor, or type conversion before ‘<’ token
simpleCounter.c: In function ‘void* simpleCounter(void*)’:
simpleCounter.c:16: error: ‘counter’ was not declared in this scope
simpleCounter.c:18: error: ‘counter’ was not declared in this scope
simpleCounter.c: In function ‘int main(int, char**)’:
simpleCounter.c:24: error: ‘counter’ was not declared in this scope
ene

hivert是正确的,C和C ++是不同的语言。

尝试这个:

#include<pthread.h>
#include<stdio.h>
#include<tbb/atomic.h>

#define NUM_OF_THREADS 16

tbb::atomic<int> counter;

void *simpleCounter(void *threadId)
{
    int i;
    for(i=0;i<256;i++)
    {
        counter.fetch_and_add(1);
    }
    printf("T%ld \t Counter %d\n", (long) threadId, (int)counter);
    pthread_exit(NULL);
}

int main(int argc, char *argv[])
{
    counter=0;
    pthread_t threadArray[NUM_OF_THREADS];
    long i;
    for(i=0;i<NUM_OF_THREADS;i++)
    {
        pthread_create(&threadArray[i], NULL, simpleCounter, (void *)i);
    }
    for(i=0;i<NUM_OF_THREADS;i++)
        pthread_join(threadArray[i], nullptr);
}

用.cpp扩展名保存(g ++不需要)。我修改了缺少的名称空间tbb :: atomic,最后还加入了一个连接,以等待所有线程完成后再退出main。它应该现在编译。将-std = c ++ 11添加为编译器选项,或将nullptr更改为NULL。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C中使用Intel TBB

来自分类Dev

使用C ++的TBB链接

来自分类Dev

静态链接 Intel tbb 的问题

来自分类Dev

使用TBB并行创建向量

来自分类Dev

使用Intel TBB以原子方式修改数组元素

来自分类Dev

在tbb :: parallel_for中使用tbb :: queueing互斥锁的简单示例程序无法编译

来自分类Dev

C ++ 11中的TBB等效物

来自分类Dev

C ++ 11中的TBB等效物

来自分类Dev

使用Clang的ThreadSanitizer和TBB避免误报

来自分类Dev

在至强融核中使用tbb原子操作

来自分类Dev

无法将Intel TBB库与/ usr / lib中的libtbb链接

来自分类Dev

unable to link Intel TBB library with libtbb in /usr/lib

来自分类Dev

使用Intel TBB的低效率Fibonacci系列比非线程实现慢得多

来自分类Dev

tbb矩阵多乘法堆栈溢出错误C ++

来自分类Dev

如何在OSX上将gbcc与TBB一起使用?

来自分类Dev

如何使用TBB进行多线程“尾调用”递归

来自分类Dev

线程构建块(TBB)使用lambda排队任务

来自分类Dev

使用TBB parallel_for_each()减少原子计数器

来自分类Dev

使用boots :: spirit :: qi进行TBB并行解析

来自分类Dev

如何使用TBB进行多线程“尾调用”递归

来自分类Dev

使用 TBB 插入一个无序的 boost bimap

来自分类Dev

如何使Intel TBB multifunction_node具有动态端口数?

来自分类Dev

如何在任务组中等待 Intel TBB 中的单个任务并杀死其他任务?

来自分类Dev

使用狙击模拟器使用英特尔 TBB 程序

来自分类Dev

TBB线程本地集是使用combinable还是enumerable_thread_specific?

来自分类Dev

使用TBB时如何检查当前正在运行多少个线程?

来自分类Dev

为什么我不能使用tbb :: task_scheduler_init创建超过32个线程?

来自分类Dev

带tbb的std :: thread-使用2个或更少的参数构建

来自分类Dev

TBB线程本地集是使用combinable还是enumerable_thread_specific?

Related 相关文章

  1. 1

    在C中使用Intel TBB

  2. 2

    使用C ++的TBB链接

  3. 3

    静态链接 Intel tbb 的问题

  4. 4

    使用TBB并行创建向量

  5. 5

    使用Intel TBB以原子方式修改数组元素

  6. 6

    在tbb :: parallel_for中使用tbb :: queueing互斥锁的简单示例程序无法编译

  7. 7

    C ++ 11中的TBB等效物

  8. 8

    C ++ 11中的TBB等效物

  9. 9

    使用Clang的ThreadSanitizer和TBB避免误报

  10. 10

    在至强融核中使用tbb原子操作

  11. 11

    无法将Intel TBB库与/ usr / lib中的libtbb链接

  12. 12

    unable to link Intel TBB library with libtbb in /usr/lib

  13. 13

    使用Intel TBB的低效率Fibonacci系列比非线程实现慢得多

  14. 14

    tbb矩阵多乘法堆栈溢出错误C ++

  15. 15

    如何在OSX上将gbcc与TBB一起使用?

  16. 16

    如何使用TBB进行多线程“尾调用”递归

  17. 17

    线程构建块(TBB)使用lambda排队任务

  18. 18

    使用TBB parallel_for_each()减少原子计数器

  19. 19

    使用boots :: spirit :: qi进行TBB并行解析

  20. 20

    如何使用TBB进行多线程“尾调用”递归

  21. 21

    使用 TBB 插入一个无序的 boost bimap

  22. 22

    如何使Intel TBB multifunction_node具有动态端口数?

  23. 23

    如何在任务组中等待 Intel TBB 中的单个任务并杀死其他任务?

  24. 24

    使用狙击模拟器使用英特尔 TBB 程序

  25. 25

    TBB线程本地集是使用combinable还是enumerable_thread_specific?

  26. 26

    使用TBB时如何检查当前正在运行多少个线程?

  27. 27

    为什么我不能使用tbb :: task_scheduler_init创建超过32个线程?

  28. 28

    带tbb的std :: thread-使用2个或更少的参数构建

  29. 29

    TBB线程本地集是使用combinable还是enumerable_thread_specific?

热门标签

归档