Creative Commons License

태그 : linux 요약보기전체보기목록닫기

1 2 3 4

TLS - Thread Local Storage

쓰레드를 돌리다보면 해당 쓰레드에서만 유효한 변수를 만들고 싶을 때가 있다. 그럴 때 어떻게 해야할까? 쓰레드 개수만큼 벡터를 잡고, 해당 쓰레드마다 벡터 인덱스를 넘겨주는 것도 나름 방법이지만, 이러한 경우를 위해 TLS라는 것이 존재한다. 축약처럼 쓰레드 안에서만 따로 스토리지를 할당한 것인데, 일반 프로세스의 스텍과 비슷하나 그 크기는 프로세스 것...

POSIX's thread tips

쓰레드 자신에 대한 핸들을 알고 싶다면, pthread_self라는 전역 변수를 사용할 것.두 쓰레드 핸들을 비교하고 싶다면 pthread_equal(핸들1,핸들2)을 사용한다. 둘이 같으면 0이 아닌 값이 나온다.쓰레드 Concurrency를 확인/설정하고 싶으면 pthread_get/setconcurrency를 사용할 것.CPU점유를 다른 쓰레드에게...

POSIX thread's condition

이런 상황을 생각해보자. 쓰레드가 있고, 그것은 평상시에 자는 상태(CPU점유율 0%)이다. 그런데 문득 할 일이 생겨서 침 흘리며 자고 있는 쓰레드를 두들겨 깨우고 싶다. 어떻게 하면 좋을까?volatile bool gWakeUp(false);void*_thr(void*){    while (!gWakeUp) usleep(1...

ET와 LT

epoll에서 ET(Edge Triggered)와 LT(Level Triggered)는 무슨 차이일까? ET는 어떠한게 변경되었을 경우만 발생하며, LT는 변경해서 해소할 될 때까지 계속 발생한다.man 페이지에 있는 예를 좀 더 손쉽게 설명하자면...파이프에 EPOLLIN을 건다.파이프에 2K를 쓴다.epoll_wait파이프에서 1K를 읽어온다.epo...

파일 시스템 정보 읽어오기

이왕 하는 거 파일 시스템 정보까지 얻어오면 좋겠다 싶으면 POSIX표준인 statvfs()를 쓸 수 있다. 자세한 설명은 역시나 man 페이지를 확인하고, 아래 예제 소스는 /dev/shm 파일 시스템에 전체 크기와 남아 있는 용량을 기가바이트 단위로 표시한 것이다.#include <iostream>using namespace std;#in...

마운트 정보 읽어오기

Linux에서 마운트 정보를 읽어보자. getmntent()가 바로 그것이다. 아쉽게도 POSIX, ANSI, IEEE 표준이 아니며, 리눅스와 SunOS, HP-UX 등에서 사용할 수 있으며, FreeBSD에서는 getmntinfo()로부터 알아낼 수 있다. 이 함수는 내부 버퍼를 사용하기 때문에 쓰레드에 안전하지 않으며, getmntent_r()으로...

fork는 epoll에서 감시하는 객체까지 복제하지 않는다.

리눅스 서버에서 epoll을 이용해서 event를 감시하면서 동시에 fork할 때는 주의가 아주매우많이 필요하다. 커널 소스를 직접 들여다 봐야하겠지만, 대략 시간이 없고 귀찮은 관계로 생략한다. 결론부터 말하자만 epoll_fd로 관리하는 감시할 이벤트 목록은 커널영역에 만들어지며, fork가 이를 복제하지 않기 때문에 부모 자식 간에 동일한 epol...

clientmqueue에서 벗어나세요.

뭐, 다르게 생각하는 사람도 있겠지만, 관리하는 서버에서 sendmail을 사용하지 않는다면 clientmqueue에 쌓이는 무지막지한 파일로부터 벗어나고 싶을 것이다.일단 clientmqueue는 선무당이 알아본 바로는 sendmail에서 배송지경로를 확정하지 못한 메일을 잠시 보관해두는 곳이고, 확정 지으면 mqueue로 메일을 옮긴 뒤, 배송한다고...

UNIX 공유객체(shared object) 만들기

#include <cstdio>using namespace std;extern "C"{extern void hello(void);}voidhello(void){    printf("void hello(void);\n");}g++ -c -fPIC hello.cppg++ -shared -lc -o hello.so hel...
1 2 3 4

Google Adsense

Google Adsense

Google Analytics



C로그팬박스