Rev 1104 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1104 | Rev 1658 | ||
---|---|---|---|
Line 49... | Line 49... | ||
49 | static void producer(void *arg); |
49 | static void producer(void *arg); |
50 | static void failed(void); |
50 | static void failed(void); |
51 | 51 | ||
52 | void producer(void *arg) |
52 | void producer(void *arg) |
53 | { |
53 | { |
- | 54 | thread_detach(THREAD); |
|
- | 55 | ||
54 | waitq_sleep(&can_start); |
56 | waitq_sleep(&can_start); |
55 | 57 | ||
56 | semaphore_down(&sem); |
58 | semaphore_down(&sem); |
57 | atomic_inc(&items_produced); |
59 | atomic_inc(&items_produced); |
58 | thread_usleep(250); |
60 | thread_usleep(250); |
59 | semaphore_up(&sem); |
61 | semaphore_up(&sem); |
60 | } |
62 | } |
61 | 63 | ||
62 | void consumer(void *arg) |
64 | void consumer(void *arg) |
63 | { |
65 | { |
- | 66 | thread_detach(THREAD); |
|
- | 67 | ||
64 | waitq_sleep(&can_start); |
68 | waitq_sleep(&can_start); |
65 | 69 | ||
66 | semaphore_down(&sem); |
70 | semaphore_down(&sem); |
67 | atomic_inc(&items_consumed); |
71 | atomic_inc(&items_consumed); |
68 | thread_usleep(500); |
72 | thread_usleep(500); |