linux下C++ 多线程问题

2024-12-30 21:14:10
推荐回答(3个)
回答1:

必须要控制!
目录相当于临界资源,必须要在线程实现过程中进行线程同步控制,否则有多个线程并发处理同一个文件的风险,导致一个线程把文件删除后,另外一个线程还在进行读取,导致读取和输出报错。
同步方式很多,下面我推荐一种方法:
1、首先在主函数中遍历所有文件,把文件名push到一个队列/链表。
2、pthread_create创建N个线程。
3、使用线程锁控制队列/链表的push和pop,保证操作同步。
4、每个线程访问队列/链表,从中pop取出一个文件名,然后进行操作。

回答2:

那么这些线程会怎么处理目录下面的一堆文件 ?

这线程函数不是你自己写的吗. 你想怎么处理就怎么处理啊.
读取 -> 处理 -> 保存(新文件) -> 删除(旧文件)
记得线程要同步.

需要控制每个线程处理的文件的范围吗?

是什么意思...

回答3:

开个int* array或int array[N]吧,然后用分别开线程处理,可以用OpenMP会好些。