| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- 컴공
- cs
- 컴공과
- 컴퓨터공학과
- 코딩
- 스택
- Stack
- 북리뷰
- 오에스
- DP
- 정석학술정보관
- OS
- 자료구조
- 문제풀이
- bfs
- 구현
- Computer science
- 브루트포스
- 백준
- Operating System
- 그래프
- vector
- 정석
- 오퍼레이팅시스템
- 알고리즘
- c++
- 코테
- 개발
- coding
- 너비우선탐색
- Today
- Total
목록semaphore (2)
Little Jay
Producer and Consumer Problem 계속해서 생산자 소비자 문제를 다루고 있다. 생산자 소비자 문제 중 생산자가 무한히 자원을 생산할 수 있다고 가정하자. 그렇기 때문에 우리가 집중해야 할 것은 소비자 파트이다. 상한은 고려할 필요가 없고 하한을 고려한다. 소비자는 단순히 empty 상태이면 wait을 하면 된다. 이 wait은 결국 어떤 data가 채워지기를 기다리는 상태이다. 앞에서 언급한 V operation과 같은 기능이다. 다시 정리를 하자면 생산자는 P, 소비자는 V Operation이다. Broken Scenario 이와 같은 생산자와 소비자고 있다고 해보자. 얼핏 보면 이렇게 생산자 소비자 문제를 구현 하는 것이 맞아 보인다. 그러나 이 코드에는 명백한 문제점이 있다. p..
#include #include #include #include #include #define ITER 1000 void *thread_increment(void * arg); void *thread_decrement(void * arg); int x; sem_t s; int main() { pthread_t tid1, tid2; sem_init(&s, 0, 1); pthread_create(&tid1, NULL, thread_increment, NULL); pthread_create(&tid2, NULL, thread_decrement, NULL); pthread_join(tid1, NULL); pthread_join(tid2, NULL); if (x != 0 ) printf("boom! counter..