출처 : http://hkpco.egloos.com/898623 유닉스 시스템 계열에서 제공되는 pthread에서 동기화를 위하여 mutex라는 것이 자주 사용되는데, mutex 변수 초기화 시에 사용되는 방법이 대표적으로 두 가지 정도가 있습니다. (원래는 더 많지만 "가장" 기본적인 초기화를 기준으로) 그 중 하나가 바로 PTHREAD_MUTEX_INITIALIZER 이며, 해당 mutex를 default 속성으로 초기화 시켜줍니다. pthread.h 헤더에 다음과 같이 정의되어 있습니다. ============================================================== #define PTHREAD_MUTEX_INITIALIZER \ {0, 0, 0, PTHREAD_MUTEX_TIMED_NP, __LOCK_INITIALIZER} ============================================================== 사용법은 다음과 같습니다. ---------------------------------------------------------------------- pthread_mutex_t mutx = PTHREAD_MUTEX_INITIALIZER; int main( void ) { return 0; } ---------------------------------------------------------------------- PTHREAD_MUTEX_INITIALIZER 사용시 주의할 점은 pthread_mutex_t type이 구조체 형태로 이루어져 있기 때문에 변수 선언 이후에는 사용할 수 없으며(다시말해, 선언과 동시에만 사용이 가능함), static mutex 전용이라는 것입니다. 즉, dynamic mutex 에서는 다른 방법을 사용해야 하는데, 이전에 말한 mutex 변수 초기화의 나머지 방법에 해당됩니다. 다음과 같은 초기화 함수를 사용
출처 : http://eslectures.blog.me/80137860924 I 2 C 의 개요 I 2 C (Inter-Integrated Circuit) 버스는 마이크로프로세서와 저속 주변 장치 사이의 통신을 위한 용도로 Philips 에서 개발한 규격인데 두 가닥의 선을 사용하므로 TWI (Two Wire Interface) 라고도 불리고 있다 . 특허권 때문인지 잘 모르겠으나 Philips 이외의 회사들은 거의 대부분 TWI 라고 부른다 . I 2 C 버스는 양방향 오픈 드레인 선인 SCL (serial clock) 과 SDA (serial data) 로 이루어져 있으며 매스터 - 슬레이브 형태로 동작한다 . SCL 은 통신의 동기를 위한 클럭용 선이고 SDA 는 데이터용 선이다 . 매스터는 SCL 로 동기를 위한 클럭을 출력하며 슬레이브는 SCL 로 출력되는 클럭에 맞추어 SDA 를 통해 데이터를 출력하거나 입력 받는다 . 단지 SDA 한 선으로만 데이터를 주고 받기 때문에 I 2 C 버스는 반이중 (half duplex) 통신만 가능하다 . SCL 선과 SDA 선은 모두 오픈 드레인므로 두 선에는 각각 풀업 저항을 연결해 주어야 한다 . 다음 그림은 I 2 C 매스터와 슬레이브들 사이의 연결을 보여주고 있다 . 모든 I 2 C 매스터와 슬레이브 장치들의 SCL 은 서로 연결되며 SDA 또한 서로 연결된다 . 모든 장치들이 SCL 과 SDA 를 각각 공유하고 있으므로 매스터가 슬레이브를 개별적으로 지정하기 위한 방법이 있어야 한다 . I 2 C 버스에서 매스터가 각 슬레이브를 구분하는 수단은 슬레이브의 주소이다 . 모든 I 2 C 슬레이브 장치들은 7 비트의 고유한 주소를 가지고 있으며 매스터는 주소로 원하는 슬레이브를 지정한다 . 주소의 길이가 7 비트이므로 매스터는 최대 128 개의 슬레이브 장치들과 연결될 수 있다 . 물론 슬레이브 장치들의 주소는 모두 달라야