2014-04-05 3 views
0

기본적으로 OS 용으로 단순화 된 장치 컨트롤러를 만들어야합니다. 대기열에 데이터 단어를 입/출력하는 동기식 및 비동기식 함수를 만들어야하고 "장치"준비가되면 & 함수가 반환됨을 알립니다. 동기 기능은 장치가 기능 (출력)과 요청이 충족 될 때까지 (입력) 대기열 &에서 단어를 제거 할 때까지 스스로 차단합니다.동기 함수에서 블로킹을 처리 하시겠습니까?

요청이 처리 될 때까지 차단해야하는 곳에 동기 함수를 처리하는 방법을 잘 모르겠습니다. 차단 측면을 어떻게 구현할 수 있습니까? pthread 잠금 장치를 사용하면 필요한 것을 수행 할 수 있습니까?

감사합니다.

+0

차단 작업은 커널 스케줄러에서 처리합니다. 블로킹 I/O 타입 연산의 일반적인 사용자 공간 끝은 조건 변수 또는 세마포어이지만,'read'와'write'와 같은 몇 가지 표준 I/O 메커니즘은 블로킹을 직접 지원합니다. –

답변

1

사용자 공간에있는 경우 : 예, pthread 뮤텍스를 사용하십시오. 소비자는 사용 가능한 데이터가없는 경우 pthread_mutex_lock입니다. 새 데이터가 대기열에 커밋 된 후 생성자에서 pthread_mutex_unlock 것입니다.

관련 문제