본문 바로가기

반응형

C/C++

(66)
Python embedding 2 - Calling Python function from C/C++ Appilcation /** 에구..날씨는 추워지고 옆구리는 허전해 지고, 덩달아 지갑까지 말썽이군요. 얼마전에 다녀가신 파산 신의 영험하심으로 아직도 가난에 허덕이고 있습니다. 인생 살아 오면서 여지껏 만원 이상의 돈을 빌려 본적이 없는 것 같은데, 태어나서 처음으로 20만원이라는 거금을 빌려 보았습니다. 하지만 중요한 것은 이 돈이 제 생활비로 들어 갈 것이 아니라, 여러 경조사금으로 모두 날아갈 돈이라는 것..ㅠㅠ 차마 더 어려우신 분들이 많기에, 여러분의 불우 이웃이 바로 접니다~..라는 말은 절대 하지 못하겠네요. 날씨가 추워지고 있습니다. 주변에 어려우신 분들 한번 둘러보시고, 살짝쿵 도움의 손길 한번 건네 보세요. 평소에는 아무렇지 않게 살다가 연말에만 도움의 손길 내밀려니 왠지 쑥스러워서 그러지 못하시는 분들~..
[C++] STL map의 요소 삭제시 주의 할 점 요즘들어 포스팅 하는 주기가 점점 길어 지고 있네요. 날씨는 점점 추워지고 솔로들이 더욱 살아 남기 힘들어지는 크리스마스가 다가 오고 있습니다. 저도 크리스마스 때 남들처럼 거리를 활보 하고 싶습니다만 겨울의 거리는 솔로에겐 냉정하지요. 올 크리스마스는 징검다리 휴가라, 크리스마스 이브에 휴가를 내면 4일을 연속으로 쉴 수 있군요. 하지만 어디 딱히 갈 곳도 없고 오라는 곳도 없으니, 저는 웹 서핑이나 하면서 블로그 포스팅이나 하렵니다. 오늘은 stl의 map의 erase에 대해서 간략하게 알아 보겠습니다. 보통 다른 stl의 컨테이너들은 erase를 하는 것에 대해 별다른 신경을 쓰지 않아도 별 문제가 없지만 map이란 녀석은 다른 컨테이너들 처럼 다루면 성질을 부리며 런타임 오류를 내버리는 경우가 있..
[C++] 멀티스레드 환경에서 volatile의 유용한 사용법 얼마전 싱글톤 패턴 관련 책을 보다 volatile에 관한 내용을 읽고, 보다 정확한 용도에 대해 알기 위해 인터넷을 떠돌던중 Dr.Dobb's에서 volatile: The Multithreaded Programmer's Best Friend라는 흥미로은 아티클을 발견하여 한글로 옮겨 봅니다. 간단하게 내용을 요약하자면 volatile이라는 키워드의 특성을 이용하여 쓰레드간에 공유 되는 변수에 강제적으로 lock을 잡고 사용하도록하는 방법을 제시하고 있습니다. 스레드간 공유 되는 자원에 lock을 잡지 않고 사용하고자 한다면 컴파일 타임에 에러를 발생 시켜 런타임에 프로그램이 예측 되지 않는 동작을 하는 것을 방지해 줍니다. 들어가며 volatile 키워드는 비동기 이벤트 환경에서 컴파일러 최적화를 통해..
DLL에서 EXE의 함수 호출하기 들어가며 일반적으로 EXE에서 로드된 DLL의 함수를 호출하는 것은 일반적인 일이다. 하지만 플러그인 프로그램이나 기타 다른 이유로 인해 DLL에서 EXE의 함수를 호출 해야하는 경우가 있다. 이 문서는 그런 경우 유용한 팁을 소개하고 있다. 이 문서는 윈도우에서 DLL을 만들고 로드 하는 방법을 알고 있다는 가정하에 작성 된 것이므로 DLL프로젝트의 생성이나 로드 방법에 대해서는 자세하게 다루지 않는다. 1. 함수를 exporting하는 exe 만들기 exe에서 함수를 export하는 것은 dll에서 하는 그것과 동일한 작업을 하면 된다. extern "C" { __declspec(dllexport) void ExportFunctionFromEXE(const std::string& callFrom) {..
정규 표현식(Regular Expressions) /** 개인적으로 UNIX/Linux 환경에서 작업을 하다 보면 정규 표현식을 사용해야 하는 경우가 종종 발생한다. 정규 표현식을 사용하지 않는다고 하더라도 크게 못할일은 없지만, 무식하면 손발이 고생한다는 말을 절실하게 느끼게 된다. 이왕이면 할일이면 고생스럽게 손노가다를 하느니 간단하게 정규표현식을 이용해서 처리하면 더 좋지 아니한가? 그리고 한가지!! 나도 매일 착각하는 것이지만 정규 표현식에 적용되는 것은 문자 하나 단위지 문자열 단위가 아니라는 것!! 잊지 말아야 하겠다.. */ . 개행문자를 제외한 어떠한 문자와도 매칭 * 이전 표현식과 매칭되는 문자가 0개 이거나 그 이상이 있음 + 이전 표현식과 매칭되는 문자가 1개 이거나 그 이상이 있음 ? 이전 표현식과 매칭되는 문자가 0개 이거나 1개..
커널 오브젝트 - 핸들 /** 갈 수록 윈도우와 리눅스 사이에서 왔다 갔다 해야 할 일이 많아 지고 있다. 오늘은 윈도우의 커널 오브젝트(Kernel Object)라는 것에 대해서 알아 보도록 하자. */ 유저 모드와 커널 모드 '커널 오브젝트'에 대해 알아보기 전에 '유저 모드'와 '커널 모드'의 실행이라는 것에 대해서 알아 보도록 하자. 프로그램을 실행하게 되면 사용자가 직접 접근할 수 있는 유저 영역과 시스템 콜등을 통해서만 접근할 수 있는 커널 영역이 있다. 주로 커널 영역에는 운영체제, 프로세스간에 공유되는 데이터들이 보존되어 함부로 메모리 억세스를 할 수 없도록 제한하고 굳이 그 자원을 사용하기 위해서는 필수적으로 커널에게 자원을 요청하여 그에 대해 구분 할 수 있는 무엇인가를 얻어와 커널의 허가 아래서 사용해야 한..
gcc 라이브러리 만들기와 사용 1. 라이브러리 파일 만들기 리눅스 상에서 GCC컴파일러를 이용해 라이브러리를 만드려면 다음과 같은 컴파일 과정을 통해서 오브젝트 파일을 생성한다. $ gcc -c filename.c (.cpp 파일을 컴파일 할 경우 g++ -c filename.cpp) 참고 : (GCC 옵션 보기) http://kukuta.tistory.com/51 컴파일이 제대로 끝났다면 확장자가 .o인 filename.o파일이 만들어 질것이다. 이번에는 생성된 오브젝트 파일을 이용하여 라이브러리를 만들도록 한다. 이 때 사용하는 명령어는 "ar"로 라이브러리 작성에 사용된다. 아래와 같이 ar옵션 그리고 생성하고자 하는 라이브러리의 이름, 마지막으로 오브젝트 파일들의 이름을 나열한후 실행 한다. (※ 윈도우에서 라이브러리 파일의 ..
gcc의 실행과 옵션 GCC의 실행 gcc [-o outputfilename] [-c] [-g] [-O | -O2] [-Idirectory] [-Ldirectory] [-llibrary] sourcefilename gcc를 실행하기 위해서는 반드시 소스 파일을 적어주어야 하며 나머지 사항들을 컴파일을 위한 옵션들로 필요에 따라 적거나 생략할 수 있습니다. 또한 모든 옵션은 적는 순서와 상관이 없이 똑같은 기능을 합니다. GCC의 옵션 -c 이 옵션을 사용하면 링크의 과정은 생략되고 컴파일만 수행합니다. 만약 이 옵션이 사용된다면 링크와 관련된 -l 또는 -L 옵션은 무시됩니다. -o outputfilename 컴파일한 결과를 저장하는 파일명을 직접 지정해 주는 옵션입니다. 이 옵션이 사용되지 않으면 기본적으로 a.out이라는..
[C++] operator 사용하기 /** stl을 좀 더 제대로 사용하고자 하니, functor가 필요하고, functor를 사용하고자 하니 operator가 필요 했다. 평소 operator를 잘 사용하지 않는 편에다가 'operator ()'라는 것이 익숙하지 않기에 그에 대한 테스트 코드를 작성 해 보았다. */ #include class __testOperator { public : __testOperator() { std::cout
Threads Scheduling /** 이래저래 먹고 사는데 바쁘다 보니 글하나 올리기도 빡세구나. 아직도 해야 할 일이 많은데 내가 생각하는 뭔가를 정리하고 올린다면 시간이 더 많이 걸릴 것 같고, 오늘은 웹에서 떠돌아 다니는 원문을 간단하게 해석해 보는 것으로 블로깅을 마무리 해야겠다. 주제는 쓰레드 스케줄링(thread scheduling)에 관련한 것으로, 내가 멀티 쓰레드를 이용해서 뭔가를 하는데 아무리해도 성능이 안나오길래 혹시 scheduling에 관련한 문제가 있지 않나 해서 조사하다 찾은 문서를 설명 할 것이다. 원론적인 스케줄링에 관련된 이야기는 아니고, 여러가지 스케줄링 기법이 있고, 내가 생성한 쓰레드가 어떤 스케줄링 알고리즘을 사용하게 설정 하느냐 하는 API 사용법 정도라고 생각하면 되겠다. 보다 자세한 쓰레드..

반응형