본문 바로가기

반응형

분류 전체보기

(425)
[C/C++] Read/Write lock Read/Write Lock의 개념 Read/Write Lock(이하 rwlock)의 기본적인 개념은 아래와 같이 간단하다. Read 작업은 값을 변경하지 않으니, 하나의 크리티컬 섹션에 여러개의 스레드가 진입해도 일관성 관련 문제가 발생하지 않는다. Write 작업은 값을 변경 할 수도 있으니, 하나의 크리티컬 섹션에 여러개의 스레드가 진입 할 경우 일관성이 깨질 수 있다. Read 작업은 여러개의 스레드가 하나의 크리티컬 섹션에 접근 가능하지만, Read하는 도중 값이 변경 되면 안된다. 위의 세 가지 사항 정도만 제외 한다면 rwlock은 mutex랑 비슷하다. 개념도 비슷하고, 사용법도 비슷하고, 하는 일도 비슷하다. rwlock의 장점은 read 작업에 있어서 여러개의 쓰레드가 서로 블록킹 하는..
심리테스트 깜소로 부터 바톤을 이어 받았습니다.(http://blog.ggamsso.wo.tc/418) 이 문답을 하실 분이 아니라면 해답을 보셔도 좋습니다. 이 문답을 하실 분이라면 먼저 문제의 답을 스스로 내 본 다음 해답을 보시기 바랍니다. 문제1 : 지금 당신의 눈앞에 벌레가 있다고 상상해보자. 몇 마리가 있는가? - 셀수 없을만큼 문제2 : 정글 속을 지나가고 있는데 갑자기 어떤 동물이 튀어나왔다 어떤 동물일까? - 레오 문제3 : 지금 의자에 앉아서 다리를 꼬려고 한다. 어느 다리를 먼저 올리는가? - 오른쪽 문제4 : 버스를 타고 사파리 파크를 지나가고 있는데 사자가 고기를 미친듯이 뜯어 먹고 있는 것을 보았다. 기분이 어떤가? - 역시 고기는 육회가 최고! 문제5 : 보통 음료수를 따라 마실 때 컵에..
libevent and multithread /** libevet를 멀티 쓰레드 환경에서 사용코자 했는데, 이것이 생각 처럼 동작 하지 않았다. connection이 하나만 들어 왔을 때는 정상동작 했지만, 둘 이 상이되면서 부터는 event_dispatch() 에서 1을 리턴(set 되어 있는 이벤트 가 없다라는 의미)하면서 계속 종료 되었다. 혹시나 싶어 libevent의 멀티 쓰레드 환경에 대해 찾아 보니 아래와 같은 글이 있어 짧은 영어 실력이나마 번역을 해 보았다. 혹시나 누군가가 잘 못된 내용을 진실로 받아 들이고 그걸 다른 사람에게 진실인양 전파 한다면 세상에 잘못된 지식들이 판치게 되고, 지식을 추구하 는 사람들에게 있어 그것만큼 나쁜 일이 없다. 아래의 글 중 잘 못된 내용이 있다면 언제든지 kukuta@gmail.com으로 알 려..
Any given Sunday 오래 전 Any given Sunday라는 아이디의 뜻을 찾아 보기 위해 인터넷을 검색하면서 우연히 이 영화를 알게 되었다. 그리고 그와 함께 빈스 롬바르디의 명언을 듣게 되고..영화에 대한 궁금증이 더 해갔다. 결국 오늘 영화를 보고야 말았다. 그렇게 재미있는 영화라고는 말하지 못하겠다. 풋볼에 열광하는 미국에서야 인기를 끌었을지 모르고, 쟁쟁한 배우들이 출연해서 인기를 끌었을지는 모르나 결정적으로 뭔가를 어필할 감동이나 사건은 없다. 늙은 감독이 있고, 그 말을 잘 듣지 않는 능력 있는 신예 선수가 감독에 동화 해 가는 과정이랄까? 인생과 풋볼에는 순간의 찰라를 노치지 말아야 한다는 알 파치노의 연설이 일품이다. - 그런데 내가 그렇게 좋아하던 빈스 롬바르디의 말은 영화 처음 시작할때 딱 한번 잠깐 ..
cvs 사용법 1. 기본적인 사용 방법 CVS는 대부분의 Linux 배포본에 포함되어 있으므로 Linux를 사용하고 있다면 이미 CVS가 설치 되어 있을 것이다. 만일 CVS 명령이 없다면 http://www.cyclic.com/에서 적당한 파일을 받아 설치하면 된다. CVS를 이용하는 모든 과정은 cvs 명령을 통해 이루어진다. cvs 명령의 기본 형식은 다음과 같다. $ cvs [cvs 옵션] 명령 [명령 옵션과 인자] 명령 부분에는 실제로 cvs에게 지시할 명령이 오게 되며, 각 명령마다 요구하는 인자가 있을 수 있다. 실제로 사용되는 명령의 종류와 기능에 대해서는 새로운 명령이 소개될 때마다 언급하도록 하겠다. 2. 저장소 초기화 CVS를 사용하기 위해서 가장 먼저 할 일은 각 프로젝트의 파일들을 저장할 저장소..
지름신 강림 시리즈 - 젠하이져 헤드셋 편 가격 : 135,000 원(나름 싸게 주고 샀다고 생각한다.) 후기 : 엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!!엠프를 사야 한다!! 결론 : 지름은 계속 된다. ..
[C++] 전역 변수 extern 키워드 extern 키워드는 '여기서는 선언만 한다. 그 내용은 어딘가에 정의 되어 있다.' 라는 의미를 가지는 키워드 이다. 여기서 '선언'과 '정의'의 개념을 잠깐 살펴보기 전에 함수를 먼저 떠올려 보자. 예를 들어 int sum(int a, int b); int main() { std::cout
오늘의 교훈 내가 생각하기에도 나는 안되는 것을 붙잡고 오래 늘어지는 경향이 있다. 분명히 이렇게 하면 안되는 것을 뻔히 느끼고 있음에도 다시 한번 똑같은 방법으로 대쉬한다. 내가 생각해도 멍청하긴 하나, 막상 하고 있는 동안에는 잘 느껴지지 않는다. 조금만 생각의 방향을 전환해도 답이 바로 옆에 있는데 오로지 내가 처음 한 방법이 맞다고 끝까지 우긴다. '포기'라는 것을 하라는 것은 아니지만, 한 가지가 실패 했을 경우 다른 길로 돌아가는 방법을 찾아 보는것이 더 효율적이고 똑똑한 사람이다. 오늘도 안되는 것을 붙잡고 하루종일 씨름했다. 알고보면 url에 공백문자 하나가 더 들어와서 파서가 파싱을 제대로 못한 것이었는데..그것이 url이 잘못 들어온다는 생각은 하지도 못하고 도데체 뭐가 잘 못된것인지 하루종일 다른..
소켓 강제 종료시 파이프(pipe) 깨짐 상황 : 서버 프로세스가 떠 있고, 거기에는 수많은(이라고 해봐야 1000개 미만)의 클라이언트 들이 물려 있다. 서버는 select로 read 이벤트를 구분하고, 서버의 listen socket은 blocking이다. 정상적으로 동작하다가 클라이언트(테스트 프로그램으로써 수백개의 connection thread를 생성 시켜 서버로 미친듯이 데이터를 주고 받는 놈)를 강제 종료 하면 항상 그런 것은 아니지만 종종 '파이프 깨짐'이라는 에러를 내고 서버가 종료 된다. 문제 : 프로세스는 종료(그것이 타의든 자의든)를 하게 되면 모든 열려있는 파일디스크립터를 닫게 된다. socket 역시 일종의 파일디스크립터이므로 예외는 아니다. 정상적인 수순을 따르자면 1. client가 죽는다. 2. 모든 열린 파일디스..
헤어스타일 바꾸다 내 나이도 이제 어느덧 27이다. 언제나 내 나이 함수의 리턴은 상수 20이라고 외치던 것이 엊그젠데 지금은 수염 더덕더덕 난 완전 아저씨 feel이다. 새해가 밝아 오기전 한 살이라도 더 먹기 전에 하고 싶은 일 한가지를 하자고 마음 먹고 그 동안 생각해 왔던 호일 퍼머를 했다. 하고난 바로 뒤에는 그럭저럭 봐줄만 했는데...보름정도 지나고 나니 영락없는 폐인 개발자 모습이군.. 사진은 회사에서 같이 일하시는 분이 찍어줬다. (나이 값 못한다고 그러기도 하지만...그렇기에 한살이라도 더 먹기 전에 이 머리를 해야만 했다. 그래도 내가 여지껏 한 머리중에서 가장 나에게 잘 어울리는 헤어 스타일 같다)

반응형