C++多线程处理数据
运行环境
OS:centos 7
编译环境:gcc 4.8
CPU: 2颗 Intel(R) Xeon(R) CPU E5-2670 v3 @ 2.30GHz,24核48线程。
背景
在服务器处理大规模的数据中,使用单线程处理数据,对多核CPU简直是暴殄天物,除非特定情况如在单核单线程测试算法运行时间。
处理任务:处理将近5000个视频的特征
处理目标:充分利用CPU核,多线程处理。
主要用到的函数:pthread_create pthread_join
int pthread_create(pthread_t *thread,
const pthread_attr_t *restrict_attr,
void*(*start_rtn)(void*),
void *restrict arg);
参数:
第一个参数*thread为指向线程标识符的指针。
第二个参数*restrict_attr用来设置线程属性,上面也可以用NULL,表示使用默认的属性。
第三个参数是线程运行函数的起始地址。
最后一个参数是运行函数的参数,NULL表示无参数
返回0表示创建成功,否则返回错误号。