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 也可以不用锁。 br />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 任务队列,生产者消费者模式就挺好,保证不会乱的 |