본문 바로가기

프로그램언어/boost

[ boost ] boost.asio.buffer #1 boost asio 라이브러리 에서 사용하고 있는 buffer에 대한 이야기를 하고자 합니다. 참 매력이 넘치는 라이브러리라는 것은 사용해보신분이라면 아실꺼라는 생각이 드네요. 참 여러모로 좋은 라이브러리 입니다. socket에서 아니 정확히 말하자면 네트워크 프로그래밍시 꼭 필요한 부분입니다. 정확한 내용을 찾아보시려면 http://www.boost.org에서 문서를 참조하시면 보다 많은 정보를 얻을 수 있습니다. boost::asio::buffer 함수는 메모리상에 가공되지 않은 객체를 생성한 후, POD(Plain Old Data) 배열이나 또는 vector POD(Plain Old Data) 또는 std::string 구성됩니다. 내부 구성은 2-트리로 연결된 구조를 가지고 있습니다. 더보기
[ Boost ] boost::asio Part2 Boost 목록 링크 : http://tingcobell.tistory.com/295 p.s 참 내용이 어렵네요..ㅠ_ㅠ 이해돕기 링크 : http://serverprogramminggem.springnote.com/pages/3912089 The Proactor Design Pattern: Concurrency Without Thread boost.asio 라이브러리는 side-by-side 동기/비동기 동작을 제공하고 있습니다. Proactor design pattern [ POSA2 ]에 기본적으로 비동기에 제공되고 있습니다. (제가 가지고 있는 책이라 생각해서 열심히 찾아봤는데 POSA1이였네요..ㅠ_ㅠ) Proactor and Boost.asio boost.asio 에서 the Proactor .. 더보기
[ Boost ] boost::asio Part1. Boost 목록 링크 : http://tingcobell.tistory.com/295 대 부분의 프로그램들은 파일, 네트워크, 시리얼 케이블 또는 콘솔에 상호작용에 의하여 동작하게 됩니다. 어떠한 경우에는 오랜 시간동안 네트워킹, I/O 동작에 의해 완료가 되기도 합니다. BOOST::ASIO 라이브러리 또한 C++ 프로그래밍을 이용하여 OS의 제어를 할 수 있습니다. * Portability ( 이식성 ) * Scalability ( 확장성 ) * Efficiency * Model concepts from established APIs, such as BSD sockets. * Ease of use. * Basis for further abstraction. boost::asio 해부 boost.asi.. 더보기
[ Boost ] boost::bind Part2 Boost 목록 링크 : http://tingcobell.tistory.com/295 boost::bind part1 에서는 간단한 예제를 통해서 사용법에 대해 이야기 하고 있습니다. 이번에는 boost::ref 와 boost::cref에 대해서 이야기 하려고 합니다. int i = 5; bind( f, ref( i ), _1 ); bind( f, cref(42) _1 ); 변수 i 에 어떠한 임의의 값을 저장한 후 함수 객체을 이용하여 함수 객체를 저장한 레퍼런스에 boost::ref 와 boost::cref 에 복사하여 사용합니다. #include #include #include struct X { short operator()(short &r) const { return ++r; } int oper.. 더보기
[ Boost ] Boost::bind #1 Boost 목록 링크 : http://tingcobell.tistory.com/295 boost에서 관심있게 보고 있는 분야 이기도 합니다. 처음에는 bind을 생각했을 때, 아 socket에서 쓰는 bind 함수 인가 보구나 하고 나중에 봐야지 했었습니다. 먼저 boost::bind을 사용하는 목적은 container의 객체들을 사용하고 싶을 때, 함수 객체를 만들어주기 위해서 사용이 됩니다. bind는 임의의 함수, 함수 포인터, 함수 객체, 멤버 함수를 함수 객체로 만들수 있기 때문에, 원하는 값을 전달 시킬 수 있습니다. 링크 : http://www.boost.org 역시 문서가 너무나도 잘되어 있습니다. boost::bind 는 std::bind1st와 std::bin2nd 보다 일반화 한 내용.. 더보기
[ Boost ] Boost::thread #4 Boost 목록 링크 : http://tingcobell.tistory.com/295 boost을 뭐 자세히 본것은 그렇게 없습니다. 그냥 관련된 사항을 찾아서 이렇게 해보면 어쩌나 저렇게 하면 어쩌나 궁금해서 시작을 하였기에 미련은 없지만, 참 매력적인 라이브러리라고 생각하고 있습니다. 하고 있자니 내가 만들 라이브러리에 꼭 boost에 필요한 내용을 넣어서 사용해야겠다는 생각이 들었습니다. Lock 에 대한 이야기를 좀 자세히 다루어 볼까 합니다. 서버프로그래머라면 진저리 나면서도 꼭 알아야 할 사항 이기에 아니 숙명이라고 해야 할것 같습니다. Synchronization Mutex Concepts Lockable Concepts TimedLockble Concepts SharedLockable Co.. 더보기
[ Boost ] Boost::thread #3 Boost 목록 링크 : http://tingcobell.tistory.com/295 이번에 이야기 하고 싶은 내용은 thread 중 데이터 관리에 대한 내용을 이야기 해볼까 합니다. 보편적으로 multi-thread에 대한 내용을 검색 또는 기본적으로 어디서 들어본 내용이 있을 수 있습니다. 하지만 여기서 다루고 싶은 내용은 mutex 즉, lock에 대한 이야기를 꺼내보려고 합니다. 가량 어떠한 중요한 공유하고 있는 데이터가 있다고 생각하겠습니다. 그런데 thread의 경합에 의해서 원하던 원하지 않던 예상결과가 틀리게 나오는 것을 쉽게 접할 수 있습니다. 대충 여기저기 내용을 검색을 통해서 알것이라는 전재를 통해 정리합니다. 위 UML에서 보여주고 있는 Manager는 무엇을 하는 놈일까요? 여기서.. 더보기
[ Boost ] Boost::thread #2 Boost 목록 링크 : http://tingcobell.tistory.com/295 간단한 셈플을 만들어 봤습니다. 싱글 스레드와 멀티 스레드 모두 간략하게 구현하고 그에 준하는 내용을 천천히 이해하려고 합니다. 최종 목표는 boost::asio을 네트워크 라이브러리에 붙이는 것이 최종 목표입니다. 하지만 기본적인 내용을 알면 좋겠다라는 생각에 부가적인 기능을 공부한 후, asio을 사용해서 네트워크 구성을 해보려고 합니다. #include #include class BoostTest { public: BoostTest() : stopCount( 0 ) { } ~BoostTest() { } public: void start( int _thread) { threadStop = true; boostThre.. 더보기