기록은 기억을 이기고 시간보다 오래 남는다.
반응형

동기화 2

쓰레드 [thread/THREAD]

쓰레드는 과거에는 표준화가 되어 있지 않았지만현제는 모던 c++에 포함이 되어 있어 #include 헤더를 선언해주면리눅스에서 따로 작업할 필요가 없이 사용가능 하다. thread 객체를 만드는 방법은 아래와 같다.std::tread t; 이 함수들은 C++11에서 제공되는 스레드 클래스의 멤버 함수들이다.hardware_concurrency()함수는 시스템에서 동시에 실행할 수 있는 최대 스레드 수를 반환get_id()스레드 객체의 고유 식별자를 반환detach()스레드 객체를 따로 분리시켜서 실행. 분리된 스레드는 부모 스레드와 독립적으로 실행joinable()함수는 스레드 객체가 join() 함수를 호출할 수 있는지 여부를 반환join()스레드가 종료될 때까지 기다린 후 스레드의 종료를 기다립니다.

세미포어(Semaphore) 활용, 1000보다 큰 값 유지하는 프로그램(c++, Thread)

Semaphore를 활용하여 동기화하며 1000보다 큰 값을 유지하는 프로그램을 만들었습니다. 각 쓰레드의 역할은 Thread 1 = 값을 감소하는 쓰레드 Thread 2 = 값을 증가하는 쓰레드 Thread 3 = 값을 출력 입니다. 아래 사진은 간단한 순서도 입니다. 부족한 점이 많습니다. 많은 조언 부탁드립니다. =========================== #include #include #include #include using namespace std; int g_total = 997; //전역변수 설정 HANDLE hSemaphore[3]; DWORD WINAPI ThreadMinus(LPVOID lpParam) {//g_total의 값을 하나씩 감소시키는 쓰레드 WaitForSingle..

반응형