<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://valley.egloos.com/rss/style/style.xsl" type="text/xsl" media="screen"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>이글루스 'mutex' 태그 최근글</title>
		<link>http://valley.egloos.com/tag/mutex</link>
		<description>mutex</description>
		<language>ko</language>
		<pubDate>Sun, 21 Nov 2010 00:11:52 +0900</pubDate>
		<generator>Egloos</generator>
		<item>
	<title><![CDATA[쓰레드(Thread) 동기화 예제 소스]]></title>
	<link>http://dakuo.egloos.com/1122158</link>
	<guid>http://dakuo.egloos.com/1122158</guid>
	<description>
	<![CDATA[ 
메모리 접근 동기화 :  1. 크리티컬 섹션(Critical Section) 기반의 동기화 - 유저 모드   Critical_SectionEx.cpp 2. 인터락 함수(Interlocked Family Of Function) 기반의 동기화 - 유저 모드   interlockedEx.cpp 3. 뮤텍스(Mutex) 기반의 동기화 - 커널 모드   MutexEx.cpp 4. 세마포어(Semaphore) 기반의 동기화 - 커널 모드   SemaphoreEx.cpp 5. 이름있는 뮤텍스(Named Mutex) 기반의 프로세스 동기화 - 커널 모드   NamedMutexEx.cpp    실행 순서의 동기화 :  1. 이벤트 기반의 동기화   EventEx.cpp 2. 이벤트 + 뮤텍스 동기화   EventMutexE	]]>
	</description>
	<pubDate>Sun, 21 Nov 2010 00:11:52 +0900</pubDate>
	<dc:creator><![CDATA[dakuo]]></dc:creator>
</item>
<item>
	<title><![CDATA[Embedded Linux] wavplay - O_NONBLOCK 모드]]></title>
	<link>http://icarosss.egloos.com/2621355</link>
	<guid>http://icarosss.egloos.com/2621355</guid>
	<description>
	<![CDATA[ 
wavplay 소스를 참고하여 wav 파일을 재생시키는데 정지시 사운드 카드를 close 할때 적지않은 딜레이가 발생하였다.    버튼을 눌러 재생/정지를 반복하는데 그런 딜레이는 문제가 될 여지가 많다.    그렇다고 하면 Non-Blocking 모드를 이용해보자.        int fd = open(&quot;dev/dsp&quot;, O_WRONLY | ONONBLOCK);            // wav파일을 열고       // 파일을 read      // 장치에 write      참고 :     이런식으로 하면 잘될거 같지만... 그렇지 않다.          파일이 일정시간 재생이 된 후 끊겨 버린다.   재생을 아랑곳하지 않고 read -&amp;gt; write를 하니 사운드버퍼가 찼을때는 write를 못하는 	]]>
	</description>
	<pubDate>Thu, 10 Jun 2010 13:35:08 +0900</pubDate>
	<dc:creator><![CDATA[OI ㅋr 로 스 의  이야기]]></dc:creator>
</item>
<item>
	<title><![CDATA[Mutex를 이용한 프로그램 중복 실행 방지 ]]></title>
	<link>http://tory45.egloos.com/4898066</link>
	<guid>http://tory45.egloos.com/4898066</guid>
	<description>
	<![CDATA[ 
실행하려는 프로그램이 이미 실행중인지 확인해서 실행중일경우 중복 실행되지 않도록 해야 경우가 종종( 개인적으로 대부분의 프로그램에서 필요하다고 생각 하는데 ^^)  있습니다. 특히 Serial이나 네트웍 통신 프로그램은 반드시 체크해야 하는 사항이구요.. 이때 간단하고 기본적인 방법이 Mutex를 사용하는겁니다.   //Global Variant HANDLE m_hMutex;  Bool CTest::CheckValidApp() {     DWORD dwError;    m_hMutex = ::CreateMutex( NULL, TRUE, &quot;APP_NAME&quot; );     dwError  = ::GetLastError();   if( m_hMutex == NULL )       return FALSE;    if	]]>
	</description>
	<pubDate>Tue, 31 Mar 2009 10:16:05 +0900</pubDate>
	<dc:creator><![CDATA[네모 반창고]]></dc:creator>
</item>
<item>
	<title><![CDATA[유용한 뮤텍스 Wrapper 클래스]]></title>
	<link>http://greenday96.egloos.com/4010724</link>
	<guid>http://greenday96.egloos.com/4010724</guid>
	<description>
	<![CDATA[ 
--- MutexLock.h ---  class MutexLock { private:  pthread_mutex_t *m_pMutex;public:  MutexLock(pthread_mutex_t *mutex);  ~MutexLock(); };  --- MutexLock.cpp ---  #include &quot;MutexLock.h&quot; MutexLock::MutexLock(pthread_mutex_t *mutex) : m_pMutex(mutex) {  pthread_mutex_lock(m_pMutex); } MutexLock::~MutexLock() {  pthread_mutex_unlock(m_pMutex); }  코드에 뮤텍스를 통한 락을 걸때 중간에 뮤텍스락을 해제해주지않고 return 되는 등의 버그를 방지하	]]>
	</description>
	<pubDate>Mon, 15 Dec 2008 16:24:01 +0900</pubDate>
	<dc:creator><![CDATA[그린데이]]></dc:creator>
</item>
<item>
	<title><![CDATA[기본적인 Mutex 초기화 방법들]]></title>
	<link>http://hkpco.egloos.com/898623</link>
	<guid>http://hkpco.egloos.com/898623</guid>
	<description>
	<![CDATA[ 
요즘 나름의 반 안식년(?ㅎㅎ)으로 인해 글이 뜸해서 간단히 하나 남겨봅니다. 유닉스 시스템 계열에서 제공되는 pthread에서 동기화를 위하여 mutex라는 것이 자주 사용되는데,  mutex 변수 초기화 시에 사용되는 방법이 대표적으로 두 가지 정도가 있습니다. (원래는 더 많지만 &quot;가장&quot; 기본적인 초기화를 기준으로)  그 중 하나가 바로 PTHREAD_MUTEX_INITIALIZER 이며, 해당 mutex를 default 속성으로 초기화 시켜줍니다. pthread.h 헤더에 다음과 같이 정의되어 있습니다. ============================================================== #define PTHREAD_MUTEX_INITIALIZER \   {0, 0, 0, 	]]>
	</description>
	<pubDate>Wed, 01 Oct 2008 21:30:32 +0900</pubDate>
	<dc:creator><![CDATA[hkpco.kr]]></dc:creator>
</item>
<item>
	<title><![CDATA[뮤텍스랑 바이너리 세마포어랑...]]></title>
	<link>http://handmade.egloos.com/4074857</link>
	<guid>http://handmade.egloos.com/4074857</guid>
	<description>
	<![CDATA[ 
이색퀴들이 뭐가 다른지 알아보려고 적으려다가 결판을 못낸...    이놈의 뮤텍스와 세마포어는 뭐가 다른가!    lkd&amp;gt; dt _KMUTANT  nt!_KMUTANT     +0x000 Header           : _DISPATCHER_HEADER     +0x010 MutantListEntry  : _LIST_ENTRY     +0x018 OwnerThread      : Ptr32 _KTHREAD     +0x01c Abandoned        : UChar     +0x01d ApcDisable       : UChar      lkd&amp;gt; dt _KSEMAPHORE  nt!_KSEMAPHORE     +0x000 Header           : _DISPATCHER_HEADER   	]]>
	</description>
	<pubDate>Thu, 10 Jan 2008 21:22:19 +0900</pubDate>
	<dc:creator><![CDATA[獨手工房]]></dc:creator>
</item>
<item>
	<title><![CDATA[쓰레드와 스레드 동기화 III]]></title>
	<link>http://handmade.egloos.com/3973192</link>
	<guid>http://handmade.egloos.com/3973192</guid>
	<description>
	<![CDATA[ 
 쓰레드와 쓰레드 동기화 II  솔직히 이걸가지고 3편에 걸쳐서 쓰기(라고 적었지만.. 실제적인 내용은 이 앞의 포스팅으로 끝..)엔 너무 질질 끄는 느낌이다.    우선 파일하나 받으시고..    남은 질문들은 다음과 같다.  테이블 핸들값을 3개의 레이어로 나눴다. 왜?! '3개'로 나눴을까? 2개, 4개는 안되나? 더 많이 나누면 메모리를 더 효율적으로 쓸수 있을거 같은데.. 왜! 굳이 3개로 나눴나?WinDbg로 핸들 카운트, 레포런스 카운트를 보여줘! 보여주라고! XP에서도 되는 방법을 찾아서 알려줘!쓰레드의 대기 리스트에 있는 모든 쓰레드의 정보를 정확하게 알수 있지 않을까? (하지만..쓰레드 대기 리스트는 항상 변경되는데.. 알 방법이 있나?)프로그래밍을 통해서(Ex&amp;gt; SetThreadPri	]]>
	</description>
	<pubDate>Fri, 30 Nov 2007 20:08:15 +0900</pubDate>
	<dc:creator><![CDATA[獨手工房]]></dc:creator>
</item>
<item>
	<title><![CDATA[쓰레드와 쓰레드 동기화.]]></title>
	<link>http://handmade.egloos.com/3965729</link>
	<guid>http://handmade.egloos.com/3965729</guid>
	<description>
	<![CDATA[ 
동시에 다양한 작업을 하기위해 멀티 프로세스 방식을 사용할수 있다.  멀티 프로세스 방식을 사용할때 많은수의 프로세스 생성은 빈번한 컨텍스트 스위칭(Context Switching)으로 이어져 성능에 부담을 준다.     쓰레드는 프로세스의 정보를 공유하기 때문에, 쓰레드 간에 컨텍스트 스위칭이 발생하더라도, 프로세스간 컨텍스트 스위칭보다 부담이 덜하다.     프로세스와 쓰레드의 차이점  쓰레드는 하나의 프로그램 내에서 여러 개의 실행 흐름을 두기 위한 모델쓰레드는 프로세스처럼 완벽히 독립적인 구조가 아님. 쓰레드들 사이에는 프로세스의 정보를 공유.쓰레드는 공유하는 요소가 있기 때문에 컨텍스트 스위칭에 걸리는 시간이 프로세스에 비해 짧음  쓰레드 특성  쓰레드별로 독립적으로 스택을 할당 받는다.   스택은	]]>
	</description>
	<pubDate>Tue, 27 Nov 2007 19:18:54 +0900</pubDate>
	<dc:creator><![CDATA[獨手工房]]></dc:creator>
</item>
<item>
	<title><![CDATA[POSIX thread's condition]]></title>
	<link>http://purewell.egloos.com/3381175</link>
	<guid>http://purewell.egloos.com/3381175</guid>
	<description>
	<![CDATA[ 
이런 상황을 생각해보자. 쓰레드가 있고, 그것은 평상시에 자는 상태(CPU점유율 0%)이다. 그런데 문득 할 일이 생겨서 침 흘리며 자고 있는 쓰레드를 두들겨 깨우고 싶다. 어떻게 하면 좋을까?    volatile bool gWakeUp(false);    void*  _thr(void*)  {      while (!gWakeUp) usleep(1000*1000);      // something...  }    int  main(int,char**)  {      // ... init thread.      gWakeUp = true;      return 0;  }이러면 쓰것나? 뭔가 찜찜허다. gWakeUp이 true로 바뀌더라도 _thr는 최악의 경우 1초 뒤에 반응을 보일 것이다. 아힝~* 싫어	]]>
	</description>
	<pubDate>Mon, 10 Sep 2007 11:17:33 +0900</pubDate>
	<dc:creator><![CDATA[Purewell.BIZ]]></dc:creator>
</item>
<item>
	<title><![CDATA[Thread-safe(3) : Lock in SQLite]]></title>
	<link>http://eminency.egloos.com/3269927</link>
	<guid>http://eminency.egloos.com/3269927</guid>
	<description>
	<![CDATA[ 
무지무지 오랜만의 포스팅이군요. 별로 바쁘지도 않았던 거 같은데...ㅡㅡ  시간 날 때마다 SQLite 소스를 보는 터라 -아직도 많이 부족하지만- thread-safe에 대한 포스팅을 몇 했던 만큼 SQLite의 Locking 메커니즘에 대해 간략히 적어볼까 합니다. 하지만 아시는 분은 다 아시듯 쓰고 보면 별로 안 간략하다는 거...   개  요  우선 DB에서의 lock이란 어떻게 보면 상당히 추상적인 개념이라고 할 수 있습니다. semaphore나 pthread의 mutex같은 것은 거의 가장 하위 레벨의 원자적인 락을 위한 구현이고, DB에서의 락은 이런 것들을 이용해 좀 더 고차원적인 동시성 제어를 구현한 것입니다. 그러므로 DB의 Lock과 OS 차원에서 말하는 세마포어나 뮤텍스 등등의 락은 의	]]>
	</description>
	<pubDate>Fri, 06 Jul 2007 13:56:49 +0900</pubDate>
	<dc:creator><![CDATA[Tunned Life Algorithm]]></dc:creator>
</item>
	</channel>
</rss>

