{"id":2408,"date":"2021-12-26T15:53:52","date_gmt":"2021-12-26T15:53:52","guid":{"rendered":"https:\/\/www.yazilimperver.com\/?p=2408"},"modified":"2021-12-26T15:53:52","modified_gmt":"2021-12-26T15:53:52","slug":"haftalik-c-44-aktif-nesne-tasarim-oruntusu","status":"publish","type":"post","link":"https:\/\/www.yazilimperver.com\/index.php\/2021\/12\/26\/haftalik-c-44-aktif-nesne-tasarim-oruntusu\/","title":{"rendered":"Haftal\u0131k C++ 44 &#8211; Aktif Nesne Tasar\u0131m \u00d6r\u00fcnt\u00fcs\u00fc"},"content":{"rendered":"<p>Evet sevgili yaz\u0131l\u0131mperver dostlar\u0131m, 2021 bitmeden sizler ile terkar birlikteyiz. Bu yaz\u0131m\u0131z\u0131n konusu Aktif Nesne tasar\u0131m \u00f6r\u00fcnt\u00fcs\u00fc.<\/p>\n<p>Eminim bir \u00e7o\u011funuz temel bir \u00e7ok tasar\u0131m \u00f6r\u00fcnt\u00fclerini duymu\u015fssunuzdur: &#8220;Singleton&#8221;, &#8220;Factory&#8221; ya da &#8220;Observer&#8221; gibi. E\u011fer bunlar\u0131 duymad\u0131ysan\u0131z (ki bunlara ben de 2022&#8217;de in\u015fallah C++ perspektifinden e\u011filece\u011fim), sizlere bu konudaki mihenk ta\u015f\u0131 olan bir kitaba g\u00f6z atman\u0131z\u0131 \u00f6nerece\u011fim: &#8220;<a href=\"https:\/\/www.amazon.com\/Design-Patterns-Elements-Reusable-Object-Oriented\/dp\/0201633612\"><span style=\"color: #008000;\"><strong>Design Patterns: Elements of Reusable Object-Oriented Software<\/strong><\/span>&#8220;<\/a>. Bu kitap i\u00e7erisinde temel tasar\u0131m \u00f6r\u00fcnt\u00fcleri, Yaratma (&#8220;Creational&#8221;), Yap\u0131sal (&#8220;Structural&#8221;) ve\u00a0 Davran\u0131\u015fsal (&#8220;Behavioral&#8221;) olarak grupland\u0131r\u0131larak, dilden ba\u011f\u0131ms\u0131z bir \u015fekilde anlat\u0131lmakta.<\/p>\n<p>Aktif nesne tasar\u0131m \u00f6r\u00fcnt\u00fcs\u00fc ise ayn\u0131 anda kullan\u0131m &#8220;Concurrency&#8221; ya da multi-threaded uygulamalar i\u00e7in kullan\u0131labilecek bir \u00f6r\u00fcnt\u00fcd\u00fcr.\u00a0Neyse, konuyu daha fazla uzatmadan \u00f6nce tan\u0131ma daha sonra da \u00f6rnek uygulamaya bir g\u00f6z atal\u0131m.<\/p>\n<p>E\u011fer, multi-threaded kod geli\u015ftiriyorsan\u0131z ya da IBM Rhapsody kullanm\u0131\u015fsan\u0131z, aktif nesne \u00f6r\u00fcnt\u00fcs\u00fcn\u00fc muhakkak duymu\u015fssunuzdur ya da fark\u0131nda olmadan zaten kullan\u0131yor da olabilirsiniz \ud83d\ude42<\/p>\n<p>Peki nedir bu aktif nesne \u00f6r\u00fcnt\u00fcs\u00fc?<\/p>\n<blockquote><p>Aktif nesne tasar\u0131m \u00f6r\u00fcnt\u00fcs\u00fc, bir fonksiyon\/metot \u00e7a\u011fr\u0131s\u0131n\u0131, \u00e7a\u011fr\u0131lan thread&#8217;ten ay\u0131rarak ba\u011f\u0131ms\u0131z hale getirerek, kendi kontrol\u00fcndeki thread&#8217;te ko\u015farak, kotarmas\u0131n\u0131 sa\u011flar.<\/p><\/blockquote>\n<p>Bu \u00f6r\u00fcnt\u00fcn\u00fcn temel amac\u0131, metot \u00e7a\u011fr\u0131s\u0131n\u0131 ayr\u0131 bir thread&#8217;e alarak ayn\u0131 anda \u00e7al\u0131\u015fmay\u0131 ve asenkron gelen istekleri kotarabilmektir. Bir di\u011fer ifade ile, g\u00fcvenilir ve e\u015fzamanl\u0131 bir \u00e7al\u0131\u015fmaya olanak sa\u011flayan bir modeldir. Tipik bir aktif nesne \u00f6r\u00fcnt\u00fcs\u00fc, bir t\u00fcr harici API, bir thread-safe kuyruk ve gerekli davran\u0131\u015f\u0131 y\u00fcr\u00fctmek i\u00e7in bir i\u015f par\u00e7ac\u0131\u011f\u0131 (thread) i\u00e7erir. A\u015fa\u011f\u0131da, basit bir \u015fekilde bu \u00f6r\u00fcnt\u00fcye ili\u015fkin bile\u015fenler tariflenmi\u015ftir:<\/p>\n<p id=\"OljTUUW\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2410 aligncenter\" src=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2021\/12\/img_61c83d10d930c.png\" alt=\"\" width=\"736\" height=\"516\" srcset=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2021\/12\/img_61c83d10d930c.png 1122w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2021\/12\/img_61c83d10d930c-300x210.png 300w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2021\/12\/img_61c83d10d930c-1024x718.png 1024w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2021\/12\/img_61c83d10d930c-768x539.png 768w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2021\/12\/img_61c83d10d930c-500x351.png 500w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2021\/12\/img_61c83d10d930c-150x105.png 150w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2021\/12\/img_61c83d10d930c-400x281.png 400w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2021\/12\/img_61c83d10d930c-800x561.png 800w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2021\/12\/img_61c83d10d930c-200x140.png 200w\" sizes=\"auto, (max-width: 736px) 100vw, 736px\" \/><\/p>\n<p>Aktif nesne \u00f6r\u00fcnt\u00fcs\u00fc, UML i\u00e7erisinde de kullan\u0131lmakta ve bu \u00f6zelli\u011fe haiz s\u0131n\u0131flar Aktif S\u0131n\u0131f olarak a\u015fa\u011f\u0131daki gibi i\u015faretlenmektedir. Bu da, ilgili s\u0131n\u0131flar\u0131n, kendine ait ko\u015fumlar\u0131, kendilerinin y\u00f6netti\u011fi anlam\u0131nda gelmektedir.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/sparxsystems.com\/enterprise_architect_user_guide\/15.2\/images\/activeclass.png\" alt=\"An active UML Class element.\" \/><\/p>\n<p>IBM Rhapsody i\u00e7erisinde de, bu \u015fekilde i\u015faretlenen s\u0131n\u0131flar, benzer \u015fekilde ayr\u0131 bir thread i\u00e7erisinde ko\u015fulmakta, ayn\u0131 zamanda bu s\u0131n\u0131flar, tan\u0131mlanan durum diyagramlar\u0131 ile de ba\u011f\u0131ms\u0131z bir \u015fekilde gelen olaylar\u0131 kotarabilmektedir. Aktif nesnelerin, durum diyagramlar\u0131 ile kullan\u0131m\u0131na ili\u015fkin Miro Samek&#8217;in <span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.state-machine.com\/doc\/PSiCC2_Active-Objects.pdf\">\u00e7ok g\u00fczel yaz\u0131s\u0131na g\u00f6z<\/a><\/strong><\/span> atman\u0131z\u0131 tavsiye ederim.<\/p>\n<p>Yukar\u0131da basit bir aktif nesneyi tarifledik. <strong><span style=\"color: #008000;\"><a style=\"color: #008000;\" href=\"https:\/\/www.dre.vanderbilt.edu\/~schmidt\/PDF\/Active-Objects.pdf\">Orjinal \u00f6r\u00fcnt\u00fcye ili\u015fkin yay\u0131nda<\/a><\/span><\/strong> ise, daha kapsaml\u0131 ve detayl\u0131 bir \u00f6r\u00fcnt\u00fc tariflenmekte. Dileyen (asl\u0131nda herkesin \ud83d\ude42 ) yaz\u0131l\u0131mperver dostlar\u0131m\u0131n bu yay\u0131na da bakmalar\u0131n\u0131 rica ediyorum. A\u015fa\u011f\u0131da, bu yay\u0131nda verilen \u00f6r\u00fcnt\u00fcn\u00fcn bile\u015fenlerine ili\u015fkin fig\u00fcr\u00fc g\u00f6rebilirsiniz.<\/p>\n<p id=\"DCzkNLz\"><img loading=\"lazy\" decoding=\"async\" width=\"523\" height=\"340\" class=\"size-full wp-image-2414 aligncenter\" src=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2021\/12\/img_61c83ed3ec5c3.png\" alt=\"\" srcset=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2021\/12\/img_61c83ed3ec5c3.png 523w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2021\/12\/img_61c83ed3ec5c3-300x195.png 300w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2021\/12\/img_61c83ed3ec5c3-500x325.png 500w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2021\/12\/img_61c83ed3ec5c3-150x98.png 150w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2021\/12\/img_61c83ed3ec5c3-400x260.png 400w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2021\/12\/img_61c83ed3ec5c3-200x130.png 200w\" sizes=\"auto, (max-width: 523px) 100vw, 523px\" \/><\/p>\n<p>Sonu\u00e7 olarak, herhangi bir \u015fekilde C++ uygulamas\u0131 geli\u015ftiriyorsan\u0131z, <strong><span style=\"color: #008000;\"><a style=\"color: #008000;\" href=\"https:\/\/www.state-machine.com\/doc\/Sutter2010a.pdf\">Herb Sutter&#8217;in de \u015fu yaz\u0131s\u0131nda bahsetti\u011fi gibi<\/a><\/span><\/strong>, \u00e7\u0131plak thread&#8217;leri kullanmak yerine, aktif nesneleri kullanmal\u0131s\u0131n\u0131z. Bu sayede a\u015fa\u011f\u0131daki faydalar\u0131 elde ediyor olaca\u011f\u0131z ki b\u00fcy\u00fck \u00f6l\u00e7ekli bir uygulamada bunlar\u0131n \u00f6nemini kesinlikle k\u00fc\u00e7\u00fcmsememelisiniz:<\/p>\n<ul>\n<li>Uygulaman\u0131n e\u015fzamanl\u0131l\u0131\u011f\u0131n\u0131 artt\u0131r\u0131rken, senkronizasyon karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 d\u00fc\u015f\u00fcrmek,<\/li>\n<li>Donan\u0131mdan sa\u011flanan paralellikten \u00fcst d\u00fczeyden yararlanma ve birden fazla aktif nesneyi paralel bir \u015fekilde \u00e7al\u0131\u015ft\u0131rma (e\u011fer donan\u0131m\/yaz\u0131l\u0131m platformu birden \u00e7ok CPU&#8217;yu destekler ise),<\/li>\n<li>Her nesneye \u00f6zg\u00fc verinin izole edilmesi.<\/li>\n<\/ul>\n<p>Bu arada <strong>paralellik<\/strong>\u00a0(<em>parallelism<\/em>) ve\u00a0<strong>ayn\u0131 anda kullan\u0131m<\/strong>\u00a0(<em>concurrency<\/em>) konusunda bir hat\u0131rlatmaya ihtiyac\u0131n\u0131z var ise a\u015fa\u011f\u0131daki yaz\u0131ma bir g\u00f6z atabilirsiniz.<\/p>\n<p><strong><span style=\"color: #008000;\"><a style=\"color: #008000;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2018\/12\/31\/english-weekly-c-7-stdthread\/\">Haftal\u0131k C++ 7- std::thread (I)<\/a><\/span><\/strong><\/p>\n<p>Evet san\u0131r\u0131m \u00f6r\u00fcnt\u00fcn\u00fcn ne oldu\u011funu, ne i\u00e7in kullan\u0131ld\u0131\u011f\u0131n\u0131 bize neler getirdi\u011fini anlad\u0131k. Arka s\u0131ralardan gelen &#8220;Kod! Kod! Kod!&#8221; \u00e7a\u011fr\u0131lar\u0131n\u0131 art\u0131k daha fazla yan\u0131ts\u0131z b\u0131rakmay\u0131p, \u00f6rnek aktif nesne s\u0131n\u0131f\u0131na bakal\u0131m \ud83d\ude42 \u00d6rne\u011fimizi, C++ 11 ile basit bir s\u0131n\u0131f olarak olu\u015fturaca\u011f\u0131z. Bu s\u0131n\u0131f, std::function sayesinde, kendisine sunulan lambda, functor ya da benzeri i\u015flevleri, aktif nesne i\u00e7erisinde kotarabilmektedir. Bu s\u0131n\u0131f\u0131 ayr\u0131ca kullanan basit bir s\u0131n\u0131f da ekliyoruz.<\/p>\n<pre class=\"lang:c++ decode:true \">\/**\r\n * @file   ActiveObject.h\r\n * @author Yaz\u0131l\u0131mperver (yazilimperver@gmail.com)\r\n * @brief  Ornek bir aktif nesne s\u0131n\u0131f\u0131m\u0131z. Detaylar i\u00e7in https:\/\/www.state-machine.com\/doc\/Sutter2010a.pdf\r\n * @version 0.1\r\n * @date    2021-12-26\r\n *\r\n * @copyright Copyright (c) 2021\r\n *\r\n *\/\r\n#include \"UnboundedSharedQueue.h\"\r\n#include &lt;functional&gt;\r\n#include &lt;iostream&gt;\r\n#include &lt;memory&gt;\r\n\r\n\/\/ Temel aktif nesnemiz\r\nclass ActiveObject\r\n{\r\npublic:\r\n    typedef std::function&lt;void()&gt; Message;\r\n\r\n    ActiveObject() \r\n        : done(false) {\r\n        thd = std::unique_ptr&lt;std::thread&gt;(\r\n            new std::thread([=] { this-&gt;Run(); }));\r\n    }\r\n\r\n    \/*! Destructor *\/\r\n    ~ActiveObject() {\r\n        Send([&amp;]{ done = true; });\r\n\r\n        std::cout &lt;&lt; \"Aktif nesne yokedilecek. Once butun islerin tamamlanmasini bekliyoruz!\\n\";\r\n        thd-&gt;join();\r\n        std::cout &lt;&lt; \"Aktif nesne yokedildi!\\n\";\r\n    }\r\n\r\n    \/*! Aktif nesnenin disariya sunulan API'si *\/\r\n    void Send(Message m) {\r\n        mq.Push(m);\r\n    }\r\nprivate:\r\n    \/*! Constructor. Bu kullanilmayacak. *\/\r\n    ActiveObject(const ActiveObject &amp;) = delete;\r\n\r\n    \/*! Atama operatoru. Bu kullanilmayacak *\/\r\n    void operator=(const ActiveObject &amp;) = delete;\r\n\r\n    \/*! Gelen asenkron istekleri tutacagimiz kuyruk *\/\r\n    CUnboundedSharedQueue&lt;Message&gt; mq;\r\n\r\n    \/*! Aktif nesneye iliskin thread *\/\r\n    std::unique_ptr&lt;std::thread&gt; thd;\r\n    \r\n    void Run() {\r\n        std::cout &lt;&lt; \"Aktif nesne yaratildi ve baslatildi. Mesajlari bekliyoruz!\\n\";\r\n        Message msg;\r\n\r\n        while (!done) {\r\n            mq.Pop(msg);\r\n            \r\n            \/\/ Ilgili islevi gerceklestirelim\r\n            msg(); \r\n        }          \r\n    }\r\n\r\n    \/*! Isimiz bitti mi *\/\r\n    bool done;\r\n};\r\n\r\nclass Backgrounder {\r\npublic:\r\n    void Save(std::string filename) {\r\n        using namespace std::chrono_literals;\r\n        mActiveObject.Send([=]{ \r\n            std::cout &lt;&lt;\"Dosya &lt;\" &lt;&lt; filename &lt;&lt;\"&gt; kayit isi basladi!\\n\";\r\n            std::this_thread::sleep_for(2000ms);\r\n            std::cout &lt;&lt;\"Dosya  &lt;\" &lt;&lt; filename &lt;&lt;\"&gt; kayit isi bitti!\\n\";\r\n            } );\r\n    }\r\n    void Print(std::string data) {\r\n        using namespace std::chrono_literals;\r\n        mActiveObject.Send([=, &amp;data]{ \r\n            std::cout &lt;&lt;\"Ekrana bastirilacak olan mesaj: \" &lt;&lt; data &lt;&lt; \"\\n\";            \r\n            std::this_thread::sleep_for(500ms);\r\n            } );\r\n    }\r\n\r\nprivate:\r\n    \/\/ Burada ayrica bu aktif nesneye spesifik veriler tutulabilir\r\n    \/\/ ...\r\n\r\n    \/\/ Aktif nesnemiz\r\n    ActiveObject mActiveObject;\r\n};\r\n\r\nint main() {\r\n    Backgrounder backActiveObject;\r\n    backActiveObject.Save(\"BuyukDosya1.bin\");\r\n    backActiveObject.Save(\"BuyukDosya2.bin\");\r\n    backActiveObject.Print(\"Merhaba dostum!\");\r\n    std::cout &lt;&lt;\"Normal sartlarda 4.5 sn sonra bunu gormeniz lazimdi!\\n\";\r\n    std::cout &lt;&lt;\"Ama uygulama kapanmadan butun islerin tamamlanmasini bekleyecegiz!\\n\";\r\n\r\n    return 0;\r\n}<\/pre>\n<p>\u00d6rne\u011fe ili\u015fkin detaylar i\u00e7in Herb Sutter&#8217;in sayfas\u0131na g\u00f6z atabilirsiniz.\u00a0 \u00d6rnekte kulland\u0131\u011f\u0131m, thread-safe queue, yukar\u0131daki aktif nesne ve di\u011fer \u00f6rnek kodlara a\u015fa\u011f\u0131daki ba\u011flant\u0131dan ula\u015fabilirsiniz. L\u00fctfen geri bildirimlerinizi benimle payla\u015f\u0131n.<\/p>\n<p><strong><span style=\"color: #008000;\"><a style=\"color: #008000;\" href=\"https:\/\/github.com\/yazilimperver\/CodeSnippets\/tree\/main\/Utilities\">https:\/\/github.com\/yazilimperver\/CodeSnippets\/tree\/main\/Utilities<\/a>\u00a0<\/span><\/strong><\/p>\n<p>Evet arkada\u015flar, mult-threaded kodlar\u0131n\u0131zda, de facto, kullanaca\u011f\u0131n\u0131z bir \u00f6r\u00fcnt\u00fc ile 2021 y\u0131l\u0131n\u0131 kapat\u0131yoruz. Peki, yukar\u0131daki s\u0131n\u0131fa daha ba\u015fka ne ekleyebiliriz? Zamanlay\u0131c\u0131 olaylar\u0131, d\u00f6n\u00fc\u015f de\u011feri, aktar\u0131lan i\u015flerin \u00f6nceliklendirilmesi, durum diyagram\u0131 kullan\u0131m\u0131 ve bir \u00e7o\u011fu m\u00fcmk\u00fcn. Bunlar\u0131 da, ger\u00e7ekle\u015ftirdik\u00e7e sizler ile payla\u015f\u0131yor olaca\u011f\u0131m, ama sizler i\u00e7in de iyi bir egzersiz f\u0131rsat\u0131 olabilir.<\/p>\n<p>Bir sonraki yaz\u0131mda g\u00f6r\u00fc\u015fmek dile\u011fiyle, bol kodlu y\u0131llar diliyorum \ud83d\ude42<\/p>\n<h2><strong><span style=\"color: #0000ff;\">Kaynaklar<\/span><\/strong><\/h2>\n<ul>\n<li><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.amazon.com\/Design-Patterns-Elements-Reusable-Object-Oriented\/dp\/0201633612\">https:\/\/www.amazon.com\/Design-Patterns-Elements-Reusable-Object-Oriented\/dp\/0201633612<\/a><\/strong><\/span><\/li>\n<li><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.dre.vanderbilt.edu\/~schmidt\/PDF\/Active-Objects.pd\">https:\/\/www.dre.vanderbilt.edu\/~schmidt\/PDF\/Active-Objects.pd<\/a><\/strong><\/span><\/li>\n<li><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.state-machine.com\/doc\/Sutter2010a.pdff\">https:\/\/www.state-machine.com\/doc\/Sutter2010a.pdff<\/a><\/strong><\/span><\/li>\n<li><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.state-machine.com\/doc\/PSiCC2_Active-Objects.pdf\">https:\/\/www.state-machine.com\/doc\/PSiCC2_Active-Objects.pdf<\/a><\/strong><\/span><\/li>\n<\/ul>\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>Evet sevgili yaz\u0131l\u0131mperver dostlar\u0131m, 2021 bitmeden sizler ile terkar birlikteyiz. Bu yaz\u0131m\u0131z\u0131n konusu Aktif Nesne tasar\u0131m \u00f6r\u00fcnt\u00fcs\u00fc. Eminim bir \u00e7o\u011funuz temel bir \u00e7ok tasar\u0131m \u00f6r\u00fcnt\u00fclerini duymu\u015fssunuzdur: &#8220;Singleton&#8221;, &#8220;Factory&#8221; ya da &#8220;Observer&#8221; gibi. E\u011fer bunlar\u0131 duymad\u0131ysan\u0131z (ki bunlara ben de 2022&#8217;de in\u015fallah C++ perspektifinden e\u011filece\u011fim), sizlere bu konudaki mihenk ta\u015f\u0131 olan bir kitaba g\u00f6z atman\u0131z\u0131 \u00f6nerece\u011fim:&#8230; <a class=\"more-link\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2021\/12\/26\/haftalik-c-44-aktif-nesne-tasarim-oruntusu\/\">Continue reading <span class=\"meta-nav\">&#8594;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":174,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[10,41,188],"tags":[941,943,13,46,946,942,945,948,944,291,947],"class_list":["post-2408","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c","category-modern-c","category-yazilim-muhendisligi","tag-active-object","tag-aktif-nesne","tag-c","tag-c-11","tag-concurreny","tag-design-pattern","tag-ibm-rhapsody","tag-shared-queue","tag-tasarim-oruntusu","tag-thread","tag-thread-safe"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Haftal\u0131k C++ 44 - Aktif Nesne Tasar\u0131m \u00d6r\u00fcnt\u00fcs\u00fc - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2021\/12\/26\/haftalik-c-44-aktif-nesne-tasarim-oruntusu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Haftal\u0131k C++ 44 - Aktif Nesne Tasar\u0131m \u00d6r\u00fcnt\u00fcs\u00fc - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"og:description\" content=\"Evet sevgili yaz\u0131l\u0131mperver dostlar\u0131m, 2021 bitmeden sizler ile terkar birlikteyiz. Bu yaz\u0131m\u0131z\u0131n konusu Aktif Nesne tasar\u0131m \u00f6r\u00fcnt\u00fcs\u00fc. Eminim bir \u00e7o\u011funuz temel bir \u00e7ok tasar\u0131m \u00f6r\u00fcnt\u00fclerini duymu\u015fssunuzdur: &#8220;Singleton&#8221;, &#8220;Factory&#8221; ya da &#8220;Observer&#8221; gibi. E\u011fer bunlar\u0131 duymad\u0131ysan\u0131z (ki bunlara ben de 2022&#8217;de in\u015fallah C++ perspektifinden e\u011filece\u011fim), sizlere bu konudaki mihenk ta\u015f\u0131 olan bir kitaba g\u00f6z atman\u0131z\u0131 \u00f6nerece\u011fim:... Continue reading &#8594;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.yazilimperver.com\/index.php\/2021\/12\/26\/haftalik-c-44-aktif-nesne-tasarim-oruntusu\/\" \/>\n<meta property=\"og:site_name\" content=\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2021-12-26T15:53:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2017\/12\/FeaturedImage-e1580417052514.png\" \/>\n\t<meta property=\"og:image:width\" content=\"32\" \/>\n\t<meta property=\"og:image:height\" content=\"32\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"yaz\u0131l\u0131mperver\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"yaz\u0131l\u0131mperver\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2021\/12\/26\/haftalik-c-44-aktif-nesne-tasarim-oruntusu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2021\/12\/26\/haftalik-c-44-aktif-nesne-tasarim-oruntusu\/\"},\"author\":{\"name\":\"yaz\u0131l\u0131mperver\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"headline\":\"Haftal\u0131k C++ 44 &#8211; Aktif Nesne Tasar\u0131m \u00d6r\u00fcnt\u00fcs\u00fc\",\"datePublished\":\"2021-12-26T15:53:52+00:00\",\"dateModified\":\"2021-12-26T15:53:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2021\/12\/26\/haftalik-c-44-aktif-nesne-tasarim-oruntusu\/\"},\"wordCount\":1019,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"keywords\":[\"active object\",\"aktif nesne\",\"c++\",\"C++ 11\",\"concurreny\",\"design pattern\",\"IBM Rhapsody\",\"shared queue\",\"tasar\u0131m \u00f6r\u00fcnt\u00fcs\u00fc\",\"thread\",\"thread-safe\"],\"articleSection\":[\"C++\",\"Modern C++\",\"Yaz\u0131l\u0131m M\u00fchendisli\u011fi\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2021\/12\/26\/haftalik-c-44-aktif-nesne-tasarim-oruntusu\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2021\/12\/26\/haftalik-c-44-aktif-nesne-tasarim-oruntusu\/\",\"url\":\"https:\/\/www.yazilimperver.com\/index.php\/2021\/12\/26\/haftalik-c-44-aktif-nesne-tasarim-oruntusu\/\",\"name\":\"Haftal\u0131k C++ 44 - Aktif Nesne Tasar\u0131m \u00d6r\u00fcnt\u00fcs\u00fc - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#website\"},\"datePublished\":\"2021-12-26T15:53:52+00:00\",\"dateModified\":\"2021-12-26T15:53:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2021\/12\/26\/haftalik-c-44-aktif-nesne-tasarim-oruntusu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2021\/12\/26\/haftalik-c-44-aktif-nesne-tasarim-oruntusu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2021\/12\/26\/haftalik-c-44-aktif-nesne-tasarim-oruntusu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ana sayfa\",\"item\":\"https:\/\/www.yazilimperver.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Haftal\u0131k C++ 44 &#8211; Aktif Nesne Tasar\u0131m \u00d6r\u00fcnt\u00fcs\u00fc\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.yazilimperver.com\/#website\",\"url\":\"https:\/\/www.yazilimperver.com\/\",\"name\":\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"description\":\"Payla\u015fmak g\u00fczeldir.\",\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.yazilimperver.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\",\"name\":\"yaz\u0131l\u0131mperver\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png\",\"contentUrl\":\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png\",\"caption\":\"yaz\u0131l\u0131mperver\"},\"logo\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Haftal\u0131k C++ 44 - Aktif Nesne Tasar\u0131m \u00d6r\u00fcnt\u00fcs\u00fc - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.yazilimperver.com\/index.php\/2021\/12\/26\/haftalik-c-44-aktif-nesne-tasarim-oruntusu\/","og_locale":"tr_TR","og_type":"article","og_title":"Haftal\u0131k C++ 44 - Aktif Nesne Tasar\u0131m \u00d6r\u00fcnt\u00fcs\u00fc - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","og_description":"Evet sevgili yaz\u0131l\u0131mperver dostlar\u0131m, 2021 bitmeden sizler ile terkar birlikteyiz. Bu yaz\u0131m\u0131z\u0131n konusu Aktif Nesne tasar\u0131m \u00f6r\u00fcnt\u00fcs\u00fc. Eminim bir \u00e7o\u011funuz temel bir \u00e7ok tasar\u0131m \u00f6r\u00fcnt\u00fclerini duymu\u015fssunuzdur: &#8220;Singleton&#8221;, &#8220;Factory&#8221; ya da &#8220;Observer&#8221; gibi. E\u011fer bunlar\u0131 duymad\u0131ysan\u0131z (ki bunlara ben de 2022&#8217;de in\u015fallah C++ perspektifinden e\u011filece\u011fim), sizlere bu konudaki mihenk ta\u015f\u0131 olan bir kitaba g\u00f6z atman\u0131z\u0131 \u00f6nerece\u011fim:... Continue reading &#8594;","og_url":"https:\/\/www.yazilimperver.com\/index.php\/2021\/12\/26\/haftalik-c-44-aktif-nesne-tasarim-oruntusu\/","og_site_name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","article_published_time":"2021-12-26T15:53:52+00:00","og_image":[{"width":32,"height":32,"url":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2017\/12\/FeaturedImage-e1580417052514.png","type":"image\/png"}],"author":"yaz\u0131l\u0131mperver","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"yaz\u0131l\u0131mperver","Tahmini okuma s\u00fcresi":"7 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.yazilimperver.com\/index.php\/2021\/12\/26\/haftalik-c-44-aktif-nesne-tasarim-oruntusu\/#article","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2021\/12\/26\/haftalik-c-44-aktif-nesne-tasarim-oruntusu\/"},"author":{"name":"yaz\u0131l\u0131mperver","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"headline":"Haftal\u0131k C++ 44 &#8211; Aktif Nesne Tasar\u0131m \u00d6r\u00fcnt\u00fcs\u00fc","datePublished":"2021-12-26T15:53:52+00:00","dateModified":"2021-12-26T15:53:52+00:00","mainEntityOfPage":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2021\/12\/26\/haftalik-c-44-aktif-nesne-tasarim-oruntusu\/"},"wordCount":1019,"commentCount":0,"publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"keywords":["active object","aktif nesne","c++","C++ 11","concurreny","design pattern","IBM Rhapsody","shared queue","tasar\u0131m \u00f6r\u00fcnt\u00fcs\u00fc","thread","thread-safe"],"articleSection":["C++","Modern C++","Yaz\u0131l\u0131m M\u00fchendisli\u011fi"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.yazilimperver.com\/index.php\/2021\/12\/26\/haftalik-c-44-aktif-nesne-tasarim-oruntusu\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.yazilimperver.com\/index.php\/2021\/12\/26\/haftalik-c-44-aktif-nesne-tasarim-oruntusu\/","url":"https:\/\/www.yazilimperver.com\/index.php\/2021\/12\/26\/haftalik-c-44-aktif-nesne-tasarim-oruntusu\/","name":"Haftal\u0131k C++ 44 - Aktif Nesne Tasar\u0131m \u00d6r\u00fcnt\u00fcs\u00fc - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/#website"},"datePublished":"2021-12-26T15:53:52+00:00","dateModified":"2021-12-26T15:53:52+00:00","breadcrumb":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2021\/12\/26\/haftalik-c-44-aktif-nesne-tasarim-oruntusu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.yazilimperver.com\/index.php\/2021\/12\/26\/haftalik-c-44-aktif-nesne-tasarim-oruntusu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.yazilimperver.com\/index.php\/2021\/12\/26\/haftalik-c-44-aktif-nesne-tasarim-oruntusu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Ana sayfa","item":"https:\/\/www.yazilimperver.com\/"},{"@type":"ListItem","position":2,"name":"Haftal\u0131k C++ 44 &#8211; Aktif Nesne Tasar\u0131m \u00d6r\u00fcnt\u00fcs\u00fc"}]},{"@type":"WebSite","@id":"https:\/\/www.yazilimperver.com\/#website","url":"https:\/\/www.yazilimperver.com\/","name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","description":"Payla\u015fmak g\u00fczeldir.","publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.yazilimperver.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb","name":"yaz\u0131l\u0131mperver","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/","url":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png","contentUrl":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png","caption":"yaz\u0131l\u0131mperver"},"logo":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/2408","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/comments?post=2408"}],"version-history":[{"count":9,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/2408\/revisions"}],"predecessor-version":[{"id":2421,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/2408\/revisions\/2421"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media\/174"}],"wp:attachment":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media?parent=2408"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/categories?post=2408"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/tags?post=2408"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}