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表示创建成功,否则返回错误号。
int pthread_join(pthread_t thre

本文介绍了在C++中利用多线程处理大规模数据的场景,包括操作系统环境、编译环境和硬件配置。针对服务器处理大量视频特征的需求,通过pthread库创建和管理线程,详细阐述了线程创建、线程同步(pthread_join)以及线程安全问题。实验结果显示,通过合理分配线程,能有效提高CPU利用率和整体处理速度。
最低0.47元/天 解锁文章
2739

被折叠的 条评论
为什么被折叠?



