살아가는것이 슬픈 생각이 든다. 당신도 그렇겠지만 슬퍼도 당신은 그에 버금가는 힘을 가졌으면 한다 --신경숙/'새야새야'에서
* 일단 소스만 올려놓았습니다. 설명은 차근차근 토를 달도록 하죠.
// // Task ~O Task ~B~^ ~T~D~@~A~P, ~T~D~@ ~T~_ ~A~^~X~J ~B~Z ~X~H| ~\ // // Code by Redpixel // #include <conio.h> // getch() ~U~L문~W~P ~O~U. #include <iostream> // cin, cout ~U~L문~W~P ~O~U. // ACE Include~S... #include "ace/Message_Block.h" #include "ace/Task.h" #include "ace/os.h" #include "ace/Service_Config.h" #include "ace/Synch.h" using namespace std; // ~E~L~J~J 문~^~P~W~^~E~K~H~K. char testStr[256] = "Test문~^~P~W~^~E~K~H~K. ^^"; // Task ~A~^~X~J ~D| ~V class TestTask : public ACE_Task<ACE_MT_SYNCH> { public: // ~]~C~]~D ~K~V~I~K~\~\~D~\ ~B~@| ~A~] ~S| ~H~S~\를 기~O~Y~K~\~B~K. int open(void *) { if (this->activate() == -1) ACE_ERROR ((LM_ERROR, "%p\n", "Task 기~O~Y!")); return 0; } // ~S| ~H~S~\~W~P~D~\ ~O~Y~^~Q~U| ~B~Z~]~D ~B~X~C~@~B~K. int svc() { ACE_DEBUG ((LM_DEBUG, "(%t) MyTask ~K~\~O~Y!\n")); // ~]~M~J ~H~X ~@~H~X. ~T~D~@~W~P ~Y~W~D~\ ~K른 ~T~D~@~] ~C~]~D ~K~B~X~L ~U~X기 ~\~D~U. int i = 0; // 무~U~\ 루~T~D. ~[~P~^~X ~Q~D~W~P ~K~\그~D~P~]~D ~S~M~X ~@~H~X를 ~S~M~X ~H~T~L ~U~U~U~X~@~L // ~X~H| ~\~]~@~\ ~D~K~^~H ~U~X기~\~D~U ~C~]~^~U~X| ~K. while (true) { char tmpStr[255]; ACE_OS::sprintf(tmpStr, "%d : %s", i, testStr); // ~^~D~K~\ ~T~D~@ ~T~_ ~O~]~D ~D| ~V ~[~D ~C~H~\~Z ~T~D~@ ~T~_~]~D ~U| ~K~U~\~K. // ~W기~W~P~J~T ~K~H~\~^~H 문~^~P~W ~U~X~B~X~L 공~D~]~D ~Y~U보~U~X~J~T ~C~\~\ ~U~\~K. ACE_Message_Block *mb = new ACE_Message_Block(ACE_OS::strlen(tmpStr)+1); // ~T~D~@ ~T~_~W~P 문~^~P~W~]~D 복~B~U~\~K. ACE_OS::strcpy(mb->wr_ptr(), tmpStr); // ~T~D~@ ~T~_~]~X ~S기 ~O~]~D를 ~R~\ 물| ~F~S~J~T~K. // ~W기~D~\~J~T ~U~D~Z~T~@ ~W~F~@~L, ~D~G~\~\ ~L~S기 ~\~D~U~D~\..^_^ mb->wr_ptr(ACE_OS::strlen(tmpStr)+1); // ~A~P~W~P ~T~D~@ ~T~_~]~D ~D~J~T~K. putq(mb); // ~]~M~J ~H~^~P ~]~@. i++; // 1~H| ~U~O~D ~^| ~S| ~K. (~T~_!) ACE_OS::sleep(1); } ACE_DEBUG ((LM_DEBUG, "(%t) MyTask ~E~L!\n")); return 0 ; } }; // ~T~] ~U~H~X~^~E~K~H~K. int main(int argc, char* argv[]) { // Task ~]~J~D~J ~D| ~V. ~U~D~A ~S| ~H~S~\~@ ~O~Y~^~Q~U~X~@~J~T ~U~J~U~X~K. TestTask m_Task; // ~S| ~H~S~\ 기~O~Y! ~@~H~@~D Task~]~X ~B~^ ~T~D~@ ~A~P~W~P 문~^~P~W~S~] ~L~S~]기 ~K~\~^~Q~U~\~K! m_Task.open(0); // 무~U~\ 루~T~D while (true) { // ~[~]~D ~T~D~@ ~T~_ ~O~]~D. 주~]~X~U| | ~P~]~@ ~T~D~@~]~X ~O~]~D~L ~V~J~T~K~J~T | ~P~]~K. // new ~U~X면 ~U~H~P~\~K! ACE_Message_Block *head = 0; // ~A~P~\~@~D ~T~D~@를 ~U~X~B~X ~[~J~T~K. m_Task.getq(head); // ~T~D~@ ~T~_~]~D ~X~]~L~@~D 주~Z ~[~Q~V ~]~V~B~K. // ~W기~D~\~J~T ~V~\~T ~T~D~@ ~U~X~B~X~L ~T~@~V~H~\~@~\ ~U~\~H~L ~H~X~V~I~U~X~L ~P~\~K. for (ACE_Message_Block *mb = head; mb != 0; mb = mb->cont()) { // ~]기 ~O~]~D~W~P~D~\ ~U~X~B~X를 ~]~V~S~]~K. cout << mb->rd_ptr(); } // ~[~]~@ ~T~D~@ ~T~_~]~D ~T모리 ~U| ~\~U~\~K. delete~U~X~@ ~U~J~J~T ~C~W~P 주~]~X~U~]. head->release(); // ~U~\ 문~^~P ~^~E| ~[| ~K~]~L~\~\ ~D~X~V~D~K. char d; cin >> d; cin.clear(); // ~^~E| ~U~\ ~@~^~P~@ q면 ~E~L. if (d == 'q') break; } return 0; }
음...폰트에 색깔이 비주얼 어시스트 같네요 -- Anonymous 2005-06-03 01:36:11









![[http]](/wiki/imgs/http.png)
