간만에 책이 아닌, 내 생각의 정리를 포스팅을 한다. 이 포스트가 "데드락을 피하는 방법" 이라든지 "락을 거는 시기를 아는 방법" 이라든지 "락의 종류에 따른 효율성" 등의 이야기를 다루고 있지는 않는다. 이 생각의 정리는 "멀티 쓰레드 기반에서 C++로 어떻게 편하게 락을 걸까?" 이다. 그렇다면, 기존의 락을 걸던 방법들과 불편한점들에 대해서 정리해 보자. 초기의 락을 거는 방법은 다음과 같다. // This post is written by ikpil // 초기의 락 거는 방법 예 #include void f( CRITICAL_SECTION *pcs ) { // Step 3. 임계영역을 걸고 들어 간다. EnterCriticalSection( pcs ); // 연산하는 영역 // Step 4. 임..
분류 전체보기 검색 결과
PC/UVa ID : 110205/10205 사설 이번 문제 역시 이해하기 어려웠다. "실시간으로 카드 섞기를 누적 하지 않고, 한번 다 섞은 후에 누적한다." 라고만 했어도 쉽게 이해 했을 텐데. 개요 52장의 카드를 주어진 방법에 따라 섞는데, 어떻게 섞였는지 출력하라는 것이다. 카드를 섞는 방법은 일명 "밑장 빼기"의 응용버전 인, "원하는 부분의 카드를 빼서 위에 쌓아 올리기" 이다. 즉, 카드의 아래서 위로 순번으로 매길때, 3번의 카드를 빼서 52번째 카드의 자리에 카드를 올려 놓는 섞기 방법이다. 여기서 중요한 점은, 실시간으로 카드 섞임을 누적하지 않고, 섞는 방법들 중 한 가지 방법으로 섞고 난 후에야 비로서 누적한다. 즉, "1번째 카드를 3번째 자리에 넣으라고 했을때, 2번째 자리가 ..
PC/UVa ID : 110204/843 사설 .. 문제를 이해 하는데 엄청난 노력이 필요했다. 일반적을 나는 짜증이 나면, 단잠(30~ 40분)을 자는 스타일인데, 이 문제를 풀기 위해서 3번은 잠을 청해야 했기에, 얼마나 문제를 이해하고자 노력했는지 스스로가 알 수 있었다. 개요 아주 간략하게 설명하자면, 암호화된 문자를 해독하여, 표준출력을 하라는 내용이다. 여기서 다루는 암호의 종류는 "알파벳 문자 한개를 다른 알파벳 문자 한개로 치환하는 암호"로 흔히 "단문자 암호"라 불리는 암호이다. 그러므로 문제는 임의의 단문자 암호화가 된 문자들이 입력되었을 때, 이 단문자 암호를 깨고, 본래의 문자가 출력되게 하라는 것이다. 임의의 단문자 암호화는 "입력 하는 사람"만 알고 있을 뿐이라는 것이다. 여기서..
PC/UVa ID : 110203/10050 개요 특정 기간 N일 동안, 동맹 휴업을 하는 정당들의 휴업일 총 수를 구하라는 것이다. 정당들의 수를 P라고 했을 때, 정당들의 휴업 지수를 각 h1 h2 .. 라고 한다. 이 휴업지수는 그 지수일자 만큼 일 한 뒤에 1번 쉰다는 뜻이다. 특정 기간 N일 중 1일 째는 무조건 일요일이며, 예외적으로 금요일, 토요일에는 휴업을 하지 않는다. . 여기까지 일반적인 설명이고, 자세한것은 링크를 보길 바란다. 예 ) http://blog.naver.com/nam_s_y/140039960770 http://talsu.net/125 http://www.programming-challenges.com/pg.php?page=downloadproblem&probid=1102..
PC/UVa ID : 110202/10315 개요 포커를 만들어라. 겠고 ..패의 무늬는 클럽을 C, 다이아몬드를 D, 하트를 H, 스페이드를 S 로 한다. 2, 3, 4, 5, 6, 7, 8, 9, T, J Q, K, A 로 숫자를 매긴다. 그리고 누가 더 높은지 비교하는 룰은 8개만 하라고 한다. 기본적으로 포커룰에 대해선 생략하고, 다음의 룰은 구현해야 한다, 하이 카드 원 페어 투 페어 쓰리 카드 스트레이트 플러스 풀 하우스 포카드 스트레이트 플러시 입력 한 줄당 10개의 카드를 나타내는 문자를 띄어쓰기로 입력하고, 앞쪽의 5장을 Black 참가자이 갖고 뒷쪽의 5장을 While 참가자가 갖는다. 예) 2H 3D 5S 9C KD 2C 3H 4S 8C AH 출력 Black 이 이기면, Black i..
최근댓글