请教下并发编程的问题
先猪大家新年快乐!因为本人对多线程缺乏认识,想借鉴下大家的代码,希望赐教。
想了两个问题,一个是多线程遍历文件;另一个是多线程计算N以内素数。
[解决办法]
你这两个需要用到多线程吗,即使用了也不一定就快.
[解决办法]
关于多线程的网上有很多示例,可以下载的啊。
[解决办法]
使用多线去遍历一个文件,每个线程去遍历文件的一部分,比如一个文件有100个字节,那么再假如你创建4个线程去遍历,把文件的100个字节分成4份,那么可以让第一个线程去访问前25个字节,第二个线程遍历第二个25个字节,以此是第三个线程、第四个线程。计算N以内的素数,方法类似,把N以内的数分成若干区间,区间的个数要根据你创建的线程数来确定。
这样你需要先了解如何创建线程,如何在线程体里遍历文件或者计算素数,还有是如何分割文件,当然需要获得文件的长度。
[解决办法]
用锁
[解决办法]
遍历文件,发现一个子文件夹,就启动一个线程。
[解决办法]
线程之间通信,用锁或者信号量。
[解决办法]
多线程遍历文件,大概要自己控制,比如可以这样:
如果是目录就启动一个子线程去处理,否则自己处理。
多线程计算素数,可以用OpenMP进行, 甚至可以利用Open MPI, 使用多个节点进行计算。