1
BOYPT 2013-07-01 22:10:49 +08:00
加锁。
|
2
tsinglux 2013-07-01 22:24:38 +08:00
只会最基本的mutex操作,每次打开一个文件就设置一个mutex=1,其他线程打开文件时就检测对应文件mutex是否为0,是就设置为1并打开操作,不是就sleep,然后再次查询。
|
3
sykp241095 2013-07-01 22:29:37 +08:00
也可以不用锁。
1,在启动其他线程前,记录一共有多少个文件,放在一个list里,比如有30个; 2, 将thread的名字设为有规律的,如thread-1, thread-2, thread-3; 3,thread-1处理前10个,thread-2处理中间10个,thread-3处理最后10个。 |
4
mac2man OP |
5
mac2man OP |
6
BOYPT 2013-07-02 08:50:15 +08:00
你贴成这样还指望有人去看你代码。
|
7
sykp241095 2013-07-02 10:13:15 +08:00
事实上,我也没看lz的代码。
其实可以用各种线程安全的queue,将所有文件组织成一个queue,比如threading.deque,然后每个线程都可以去pop/shift,这样也不用加锁。 |
8
mac2man OP |
9
qdcanyun 2013-07-02 15:27:29 +08:00
|
10
ma6174 2013-07-02 15:44:13 +08:00
Queue +1
任务队列,生产者消费者模式就挺好,保证不会乱的 |