{"id":2730,"date":"2023-02-14T18:34:35","date_gmt":"2023-02-14T18:34:35","guid":{"rendered":"https:\/\/www.yazilimperver.com\/?p=2730"},"modified":"2023-03-17T18:54:47","modified_gmt":"2023-03-17T18:54:47","slug":"haftalik-c-55-boost-asio-ii-temeller-ve-mimari","status":"publish","type":"post","link":"https:\/\/www.yazilimperver.com\/index.php\/2023\/02\/14\/haftalik-c-55-boost-asio-ii-temeller-ve-mimari\/","title":{"rendered":"Haftal\u0131k C++ 55 &#8211; Boost Asio II &#8211; Temeller ve Mimari"},"content":{"rendered":"<p>Merhaba sevgili yaz\u0131l\u0131mperver dostlar\u0131m, Boost.Asio yaz\u0131lar\u0131m\u0131za devam ediyorum. Bir \u00f6nceki yaz\u0131mda, Boost.Asio&#8217;yu nas\u0131l indirebilece\u011fimiz, hedefleri ve \u00e7ok k\u0131sa bir giri\u015f yapm\u0131\u015ft\u0131k. Bu yaz\u0131mda ise temel kavramlar\u0131na, kabiliyetlerine, kullan\u0131m\u0131na ve \u00f6rnek bir uygulamaya bak\u0131yor olaca\u011f\u0131z. Bir ka\u00e7 yaz\u0131 sonras\u0131nda da, burada edindi\u011fimiz kabiliyetleri, uEngine4&#8217;e entegre ediyor olaca\u011f\u0131z ve maceram\u0131za oradan devam edece\u011fiz. Bir \u00f6nceki yaz\u0131m\u0131 da buraya b\u0131rakay\u0131m:<\/p>\n<p><span style=\"color: #339966;\"><strong><a style=\"color: #339966;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2023\/01\/29\/haftalik-c-54-boost-asio-i-giris\/\">Haftal\u0131k C++ 54 &#8211; Boost.Asio I &#8211; Giri\u015f<\/a><\/strong><\/span><\/p>\n<p>Haydi Boost.Asio&#8217;ya daha yak\u0131ndan bakal\u0131m. Bu yaz\u0131m\u0131n bir \u00e7ok yerinde <span style=\"color: #339966;\"><strong><a style=\"color: #339966;\" href=\"https:\/\/www.boost.org\/doc\/libs\/1_81_0\/doc\/html\/boost_asio\/overview\/core.html\">https:\/\/www.boost.org\/doc\/libs\/1_81_0\/doc\/html\/boost_asio\/overview\/core.html<\/a><\/strong><\/span> sayfas\u0131ndak\u0131 i\u00e7erikleri sizler ile payla\u015f\u0131yor olaca\u011f\u0131m. Bir ka\u00e7 farkl\u0131 kaynaktan buldu\u011fum ve faydal\u0131 oldu\u011funa inand\u0131\u011f\u0131m hususlar\u0131 da buraya ekliyor olaca\u011f\u0131m. Bu sebeple, daha detayl\u0131 bilgiler i\u00e7in ilgili sayfalara eri\u015febilirsiniz.<\/p>\n<h2><span style=\"color: #0000ff;\"><strong>Proactor Tasar\u0131m \u00d6r\u00fcnt\u00fcs\u00fc &#8211; Giri\u015f<\/strong><\/span><\/h2>\n<p>Bir \u00f6nceki yaz\u0131mda da bahsetti\u011fim gibi Boost.Asio hem senkron hem de asenkron operasyonlar\u0131 desteklemektedir. Asenkron operasyonlar i\u00e7in ise &#8220;Proactor&#8221; tasar\u0131m \u00f6r\u00fcnt\u00fcs\u00fcn\u00fc kullanmaktad\u0131r (Bu \u00f6r\u00fcnt\u00fcn\u00fcn\u00a0 orjinal dok\u00fcman\u0131na ula\u015fmak i\u00e7in <span style=\"color: #008000;\"><strong><a class=\"link\" style=\"color: #008000;\" href=\"https:\/\/www.boost.org\/doc\/libs\/1_81_0\/doc\/html\/boost_asio\/overview\/core\/async.html#boost_asio.overview.core.async.references\">POSA2<\/a><\/strong><\/span> sayfas\u0131na ula\u015fabilirsiniz.<\/p>\n<p>Boost sayfas\u0131nda, proactor tasar\u0131m \u00f6r\u00fcnt\u00fcs\u00fcne ili\u015fkin detayl\u0131 bir aktar\u0131m yap\u0131lmakta, fakat onun \u00f6ncesinde k\u0131sa bir \u00f6zet yapmak istiyorum sizlere.<\/p>\n<p>Peki, bu \u00f6r\u00fcnt\u00fc bize ne sa\u011fl\u0131yor? \u00d6zetle bize, multithreaded programlama ile u\u011fra\u015fmadan, olaylar\u0131n asenkron bir \u015fekilde kotar\u0131lmas\u0131na y\u00f6nelik bir \u00e7\u00f6z\u00fcm sunuyor ve yaz\u0131l\u0131m\u0131n olay-tabanl\u0131 bir \u015fekilde tasarlanmas\u0131na y\u00f6nlendirmektedir.<\/p>\n<p>Peki bunu nas\u0131l yap\u0131yor? A\u015fa\u011f\u0131da da g\u00f6sterildi\u011fi \u00fczere, k\u0131saca sonucuna ihtiya\u00e7 duydu\u011fumuz hesaplamay\u0131 direk \u00e7a\u011f\u0131rmak yerine, bu i\u015fi ba\u015fka bir thread&#8217;e aktar\u0131p, i\u015f bitince, \u00e7a\u011f\u0131ran\u0131 haberdar edecek \u015fekilde \u00e7al\u0131\u015fmakta.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/481\/1*HE1zsJhL4CW5UvvhryK6tA.png\" \/><\/p>\n<p id=\"gKaRECm\">Burada, ana thread taraf\u0131ndan bir i\u015f g\u00f6re kuyru\u011funa aktar\u0131l\u0131r aktar\u0131lmaz, e\u011fer bo\u015f bir i\u015f\u00e7i thread taraf\u0131ndan ele al\u0131narak kotar\u0131l\u0131r.<\/p>\n<p>Bu noktada, bu tasar\u0131m \u00f6r\u00fcnt\u00fcs\u00fcn\u00fcn daha \u00f6nce bahsetti\u011fimiz aktif nesne ve reactor \u00f6r\u00fcnt\u00fcs\u00fc ile benzerlik i\u00e7erdi\u011fini g\u00f6r\u00fcyor olacaks\u0131n\u0131z (reactor&#8217;e daha \u00f6nce de\u011finmedim).<\/p>\n<p>\u00d6ncelikle aktif nesne ile kar\u015f\u0131la\u015ft\u0131rd\u0131\u011f\u0131m\u0131zda, her iki \u00f6r\u00fcnt\u00fc de, asl\u0131nda &#8220;invocation&#8221; ile &#8220;execution&#8221;&#8216;\u0131 bir birinden ba\u011f\u0131ms\u0131z hale getirmesi anlam\u0131nda benzerler fakat, Proactor \u00f6r\u00fcnt\u00fcs\u00fc, aktif nesne\u00a0 yakla\u015f\u0131m\u0131na nazaran daha merkezi bir yakla\u015f\u0131m izlemekte ve i\u015fletim sisteminin sundu\u011fu alt seviye servisleri de kullanarak, di\u011ferine nazaran daha performansl\u0131 bir \u00e7\u00f6z\u00fcm sundu\u011fu kaynaklar k\u0131sm\u0131na da ekledi\u011fim dok\u00fcmanlarda ifade edilmekte.<\/p>\n<p>\u015eimdi de, proactor ve reactor \u00f6r\u00fcnt\u00fclerinin fark\u0131na bir g\u00f6z atal\u0131m. Her iki yakla\u015f\u0131mda, olaylar\u0131n (event) kotar\u0131lmas\u0131 i\u00e7in e\u015fzamanl\u0131 \u00e7al\u0131\u015fan yaz\u0131l\u0131mlar i\u00e7in sunulmaktad\u0131r. Temel olarak, reactor \u00f6r\u00fcnt\u00fcs\u00fcnde, asenkron ger\u00e7ekle\u015ftirilecek olan operasyon, ger\u00e7ekle\u015ftirilmeye haz\u0131r oldu\u011funda, istemci haberdar edilir, proactorde ise ilgili oeprasyon ger\u00e7ekle\u015ftirilir ve tamamlanmas\u0131 sonras\u0131nda istemci haberdar edilir. Soket haberle\u015fmesi \u00fczerinden bunu a\u00e7\u0131klayacak olursak, reactor \u00f6r\u00fcnt\u00fcs\u00fcnde, soketten veri okumak isteyen istemci, veri okunmaya haz\u0131r olay\u0131n\u0131 al\u0131r ve sonras\u0131n okuma i\u015flemini ger\u00e7ekle\u015ftirir. Proactor \u00f6r\u00fcnt\u00fcs\u00fcnde ise, istemci okuma iste\u011fini iletir ve okuma iste\u011fi ger\u00e7ekle\u015fince bir olay ile haberdar edilir.<\/p>\n<p>A\u015fa\u011f\u0131da bir Web sunucusuna gelen iste\u011fin reactor ve proactor yakla\u015f\u0131mlar\u0131na g\u00f6re nas\u0131l ele al\u0131nd\u0131\u011f\u0131 g\u00f6sterilmekte (Reactor soldaki, Proactor ise sa\u011fdaki). Detaylar i\u00e7in\u00a0 <a href=\"https:\/\/www.dre.vanderbilt.edu\/~schmidt\/PDF\/proactor.pdf\"><span style=\"color: #008000;\"><strong>https:\/\/www.dre.vanderbilt.edu\/~schmidt\/PDF\/proactor.pdf<\/strong><\/span><\/a> dok\u00fcman\u0131na g\u00f6z atabilirsiniz:<\/p>\n<p id=\"qPjMKuU\"><img loading=\"lazy\" decoding=\"async\" width=\"1092\" height=\"407\" class=\"alignnone size-full wp-image-2738 \" src=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2023\/02\/img_63e158ba18c4a.png\" alt=\"\" srcset=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2023\/02\/img_63e158ba18c4a.png 1092w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2023\/02\/img_63e158ba18c4a-300x112.png 300w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2023\/02\/img_63e158ba18c4a-1024x382.png 1024w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2023\/02\/img_63e158ba18c4a-768x286.png 768w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2023\/02\/img_63e158ba18c4a-500x186.png 500w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2023\/02\/img_63e158ba18c4a-150x56.png 150w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2023\/02\/img_63e158ba18c4a-400x149.png 400w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2023\/02\/img_63e158ba18c4a-800x298.png 800w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2023\/02\/img_63e158ba18c4a-200x75.png 200w\" sizes=\"auto, (max-width: 1092px) 100vw, 1092px\" \/><\/p>\n<h2><span style=\"color: #0000ff;\"><strong>Proactor Tasar\u0131m \u00d6r\u00fcnt\u00fcs\u00fc &#8211; Boost<\/strong><\/span><\/h2>\n<p>\u015eimdi de, boost sayfas\u0131nda verilen, asio taraf\u0131ndan da benimsenen daha detayl\u0131 a\u00e7\u0131klamara bir g\u00f6z atal\u0131m.<\/p>\n<p>&nbsp;<\/p>\n<p><span class=\"inlinemediaobject\"><img decoding=\"async\" src=\"https:\/\/www.boost.org\/doc\/libs\/1_81_0\/doc\/html\/boost_asio\/proactor.png\" \/><\/span><\/p>\n<ul>\n<li><strong>Asenkron Operasyon<\/strong> (&#8220;Asynchronous Operation&#8221;)\n<ul>\n<li>Asenkron olarak y\u00fcr\u00fct\u00fclebilecek operasyon olarak tan\u0131mlan\u0131r, \u00f6r soketten veri okuma veya yazma.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Asenkron Operasyon \u0130\u015flemcisi<\/strong> (&#8220;Asynchronous Operation Processor&#8221;)\n<ul>\n<li>Asenkron operasyonlar\u0131 ger\u00e7ekle\u015ftirip, tamamlanma bilgilerini ilgili tamamlanma olay kuyru\u011funa ekler.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Tamamlanma Olay Kuyru\u011fu<\/strong> (&#8220;Completion Event Queue&#8221;)\n<ul>\n<li>Tamamlanma olaylar\u0131n\u0131n, asenkron olay \u00e7o\u011fullay\u0131c\u0131s\u0131 (Asynchronous event demultiplexer) taraf\u0131ndan t\u00fcketilmeden \u00f6nce tutulaca\u011f\u0131 kuyruk.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Tamamlanma Kotar\u0131c\u0131s\u0131<\/strong> (&#8220;Completion Handler&#8221;)\n<ul>\n<li>Bir asenkron operasyon sonucu i\u015fleyen bile\u015fen, bir di\u011fer ifade ile fonksiyon nesnelerini temsil ediyor ve genelde boost::bind ile sunulmakta.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Asenkron Olay \u00c7o\u011fullay\u0131c\u0131s\u0131\u00a0<\/strong> (&#8220;Asynchronous Event Demultiplexer&#8221;)\n<ul>\n<li>Tamamlanma olay kuyru\u011funa yeni bir olay gelene kadar bloklanan ve gelince de istemciye d\u00f6n\u00fc\u015f sa\u011flar.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Proactor<\/strong>\n<ul>\n<li>Asenkron olay \u00e7o\u011fullay\u0131c\u0131s\u0131n\u0131 olaylar\u0131 kuyruktan \u00e7ekmesi i\u00e7in tetikler ve tamamlanma kotar\u0131c\u0131lar\u0131n\u0131 \u00e7a\u011f\u0131r\u0131r.\u00a0 Asl\u0131nda <code class=\"computeroutput\"><span class=\"identifier\">io_context<\/span><\/code> s\u0131n\u0131f\u0131n\u0131n temelde temsil etti\u011fi i\u015flev bu.<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u0130stemci<\/strong> (&#8220;Initiator&#8221;)\n<ul>\n<li>Asenkron operasyonu tetikleyen, \u00e7a\u011f\u0131ran istemcidir, bunu da asenkron operasyon i\u015flemcisi arac\u0131l\u0131\u011f\u0131 ile yapar.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"blockquote\">\n<p>Yukar\u0131da da belirtti\u011fim sayfa i\u00e7erisinde, Boost.asio&#8217;nun bu i\u015flerini nas\u0131l ger\u00e7ekle\u015ftirdi\u011fini bulabilirsiniz. Burada bu konulara girmeyece\u011fim ama merakl\u0131 okuyucular\u0131m ilgili kaynaklara bir g\u00f6z atabilirler.<\/p>\n<p>Bu yakla\u015f\u0131m\u0131n avantajlar\u0131 a\u015fa\u011f\u0131daki gibi s\u0131ralanabilir:<\/p>\n<ul>\n<li><strong>Ta\u015f\u0131nabilirlik (&#8220;Portability&#8221;)<\/strong>\n<ul>\n<li>Bir \u00e7ok i\u015fletim sistemi do\u011fal asenkron I\/O API&#8217;si sunulmakta ve y\u00fcksek performansl\u0131 a\u011f uygulamalar\u0131 i\u00e7in bu daha \u00e7ok tercih edilmektedir. Boost.asio da bunu POSIX ve Windows i\u00e7in sizlerden soyutlamakta.<\/li>\n<\/ul>\n<\/li>\n<li><strong>E\u015fzamanl\u0131 \u00c7al\u0131\u015fmay\u0131, Thread&#8217;lerden Ay\u0131rma (&#8221; Decoupling threading from concurrency&#8221;)<\/strong>\n<ul>\n<li>Uygulaman\u0131n kendisinin bir \u00e7ok thread olu\u015fturarak, uzun s\u00fcrecek i\u015fleri bunlara yapt\u0131rmas\u0131ndan, uygulamay\u0131 kurtarmakta (burada dikkat edilmesi gereken, hi\u00e7 thread olu\u015fturulmamas\u0131 de\u011fil, bunun kontrol\u00fcn\u00fc boost.asio&#8217;nun \u00fcstlenmesi),<\/li>\n<\/ul>\n<\/li>\n<li><strong>Performans ve \u00d6l\u00e7eklendirme (&#8220;Performance and Scalability&#8221;)<\/strong>\n<ul>\n<li>Her bir ba\u011flant\u0131ya bir thread her zaman performans anlam\u0131nda bir fark yaratmayabilir hatta yava\u015flatabilir (context-switch, senkronizasyon ve CPU&#8217;lar aras\u0131 veri de\u011fi\u015fimi),<\/li>\n<\/ul>\n<\/li>\n<li><strong>Basitele\u015ftirilmi\u015f Uygulama Senkronizasyon<\/strong>\n<ul>\n<li>Burada uygulamaya ili\u015fin operasyonlar, tamamlanma kotar\u0131c\u0131lar\u0131 \u00fczerinden yap\u0131ld\u0131\u011f\u0131 i\u00e7in senkronizasyon hususlar\u0131n\u0131n \u00f6n\u00fcne ge\u00e7ilmektedir,<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Elbette, bu yakla\u015f\u0131ma ili\u015fkin bir tak\u0131m dezavantajlar da s\u0131ralanm\u0131\u015f durumda:<\/p>\n<ul>\n<li><strong>Program Karma\u015f\u0131kl\u0131\u011f\u0131<\/strong>\n<ul>\n<li>Asenkron mekanizmalara kullanarak uygulama geli\u015ftirme her zaman kolay olmayabilir ve hata ay\u0131klama zorla\u015fabilir,<\/li>\n<\/ul>\n<\/li>\n<li><strong>Bellek Kullan\u0131m\u0131<\/strong>\n<ul>\n<li>Asenkron operasyonlar devam ederken, bu operasyonlar i\u00e7in alanlar ayr\u0131lmal\u0131 ve korunmal\u0131d\u0131r (reakt\u00f6r \u00f6r\u00fcnt\u00fcs\u00fcnde bu ihtiya\u00e7 bulunmuyor)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/div>\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.dre.vanderbilt.edu\/~schmidt\/PDF\/proactor.pdf\">https:\/\/www.dre.vanderbilt.edu\/~schmidt\/PDF\/proactor.pdf<\/a><\/strong><\/span><\/li>\n<li><span style=\"color: #008000;\"><strong>[POSA2] D. Schmidt et al,\u00a0<span class=\"emphasis\"><em>Pattern Oriented Software Architecture, Volume 2<\/em><\/span>. Wiley, 2000.<\/strong><\/span><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Merhaba sevgili yaz\u0131l\u0131mperver dostlar\u0131m, Boost.Asio yaz\u0131lar\u0131m\u0131za devam ediyorum. Bir \u00f6nceki yaz\u0131mda, Boost.Asio&#8217;yu nas\u0131l indirebilece\u011fimiz, hedefleri ve \u00e7ok k\u0131sa bir giri\u015f yapm\u0131\u015ft\u0131k. Bu yaz\u0131mda ise temel kavramlar\u0131na, kabiliyetlerine, kullan\u0131m\u0131na ve \u00f6rnek bir uygulamaya bak\u0131yor olaca\u011f\u0131z. Bir ka\u00e7 yaz\u0131 sonras\u0131nda da, burada edindi\u011fimiz kabiliyetleri, uEngine4&#8217;e entegre ediyor olaca\u011f\u0131z ve maceram\u0131za oradan devam edece\u011fiz. Bir \u00f6nceki yaz\u0131m\u0131 da&#8230; <a class=\"more-link\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2023\/02\/14\/haftalik-c-55-boost-asio-ii-temeller-ve-mimari\/\">Continue reading <span class=\"meta-nav\">&#8594;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"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":[33],"tags":[941,1071,1075,1066,1067,1074,1072,1073],"class_list":["post-2730","post","type-post","status-publish","format-standard","hentry","category-haber","tag-active-object","tag-architecture","tag-asenkron-operasyonlar","tag-boost","tag-boost-asio","tag-olay-tabanli-mimari","tag-proactor","tag-reactor"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Haftal\u0131k C++ 55 - Boost Asio II - Temeller ve Mimari - 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\/2023\/02\/14\/haftalik-c-55-boost-asio-ii-temeller-ve-mimari\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Haftal\u0131k C++ 55 - Boost Asio II - Temeller ve Mimari - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"og:description\" content=\"Merhaba sevgili yaz\u0131l\u0131mperver dostlar\u0131m, Boost.Asio yaz\u0131lar\u0131m\u0131za devam ediyorum. Bir \u00f6nceki yaz\u0131mda, Boost.Asio&#8217;yu nas\u0131l indirebilece\u011fimiz, hedefleri ve \u00e7ok k\u0131sa bir giri\u015f yapm\u0131\u015ft\u0131k. Bu yaz\u0131mda ise temel kavramlar\u0131na, kabiliyetlerine, kullan\u0131m\u0131na ve \u00f6rnek bir uygulamaya bak\u0131yor olaca\u011f\u0131z. Bir ka\u00e7 yaz\u0131 sonras\u0131nda da, burada edindi\u011fimiz kabiliyetleri, uEngine4&#8217;e entegre ediyor olaca\u011f\u0131z ve maceram\u0131za oradan devam edece\u011fiz. Bir \u00f6nceki yaz\u0131m\u0131 da... Continue reading &#8594;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.yazilimperver.com\/index.php\/2023\/02\/14\/haftalik-c-55-boost-asio-ii-temeller-ve-mimari\/\" \/>\n<meta property=\"og:site_name\" content=\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2023-02-14T18:34:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-03-17T18:54:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/miro.medium.com\/max\/481\/1*HE1zsJhL4CW5UvvhryK6tA.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=\"6 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\/2023\/02\/14\/haftalik-c-55-boost-asio-ii-temeller-ve-mimari\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2023\/02\/14\/haftalik-c-55-boost-asio-ii-temeller-ve-mimari\/\"},\"author\":{\"name\":\"yaz\u0131l\u0131mperver\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"headline\":\"Haftal\u0131k C++ 55 &#8211; Boost Asio II &#8211; Temeller ve Mimari\",\"datePublished\":\"2023-02-14T18:34:35+00:00\",\"dateModified\":\"2023-03-17T18:54:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2023\/02\/14\/haftalik-c-55-boost-asio-ii-temeller-ve-mimari\/\"},\"wordCount\":1151,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"keywords\":[\"active object\",\"architecture\",\"asenkron operasyonlar\",\"boost\",\"boost asio\",\"olay tabanl\u0131 mimari\",\"proactor\",\"reactor\"],\"articleSection\":[\"Haber\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2023\/02\/14\/haftalik-c-55-boost-asio-ii-temeller-ve-mimari\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2023\/02\/14\/haftalik-c-55-boost-asio-ii-temeller-ve-mimari\/\",\"url\":\"https:\/\/www.yazilimperver.com\/index.php\/2023\/02\/14\/haftalik-c-55-boost-asio-ii-temeller-ve-mimari\/\",\"name\":\"Haftal\u0131k C++ 55 - Boost Asio II - Temeller ve Mimari - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#website\"},\"datePublished\":\"2023-02-14T18:34:35+00:00\",\"dateModified\":\"2023-03-17T18:54:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2023\/02\/14\/haftalik-c-55-boost-asio-ii-temeller-ve-mimari\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2023\/02\/14\/haftalik-c-55-boost-asio-ii-temeller-ve-mimari\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2023\/02\/14\/haftalik-c-55-boost-asio-ii-temeller-ve-mimari\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ana sayfa\",\"item\":\"https:\/\/www.yazilimperver.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Haftal\u0131k C++ 55 &#8211; Boost Asio II &#8211; Temeller ve Mimari\"}]},{\"@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++ 55 - Boost Asio II - Temeller ve Mimari - 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\/2023\/02\/14\/haftalik-c-55-boost-asio-ii-temeller-ve-mimari\/","og_locale":"tr_TR","og_type":"article","og_title":"Haftal\u0131k C++ 55 - Boost Asio II - Temeller ve Mimari - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","og_description":"Merhaba sevgili yaz\u0131l\u0131mperver dostlar\u0131m, Boost.Asio yaz\u0131lar\u0131m\u0131za devam ediyorum. Bir \u00f6nceki yaz\u0131mda, Boost.Asio&#8217;yu nas\u0131l indirebilece\u011fimiz, hedefleri ve \u00e7ok k\u0131sa bir giri\u015f yapm\u0131\u015ft\u0131k. Bu yaz\u0131mda ise temel kavramlar\u0131na, kabiliyetlerine, kullan\u0131m\u0131na ve \u00f6rnek bir uygulamaya bak\u0131yor olaca\u011f\u0131z. Bir ka\u00e7 yaz\u0131 sonras\u0131nda da, burada edindi\u011fimiz kabiliyetleri, uEngine4&#8217;e entegre ediyor olaca\u011f\u0131z ve maceram\u0131za oradan devam edece\u011fiz. Bir \u00f6nceki yaz\u0131m\u0131 da... Continue reading &#8594;","og_url":"https:\/\/www.yazilimperver.com\/index.php\/2023\/02\/14\/haftalik-c-55-boost-asio-ii-temeller-ve-mimari\/","og_site_name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","article_published_time":"2023-02-14T18:34:35+00:00","article_modified_time":"2023-03-17T18:54:47+00:00","og_image":[{"url":"https:\/\/miro.medium.com\/max\/481\/1*HE1zsJhL4CW5UvvhryK6tA.png"}],"author":"yaz\u0131l\u0131mperver","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"yaz\u0131l\u0131mperver","Tahmini okuma s\u00fcresi":"6 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.yazilimperver.com\/index.php\/2023\/02\/14\/haftalik-c-55-boost-asio-ii-temeller-ve-mimari\/#article","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2023\/02\/14\/haftalik-c-55-boost-asio-ii-temeller-ve-mimari\/"},"author":{"name":"yaz\u0131l\u0131mperver","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"headline":"Haftal\u0131k C++ 55 &#8211; Boost Asio II &#8211; Temeller ve Mimari","datePublished":"2023-02-14T18:34:35+00:00","dateModified":"2023-03-17T18:54:47+00:00","mainEntityOfPage":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2023\/02\/14\/haftalik-c-55-boost-asio-ii-temeller-ve-mimari\/"},"wordCount":1151,"commentCount":0,"publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"keywords":["active object","architecture","asenkron operasyonlar","boost","boost asio","olay tabanl\u0131 mimari","proactor","reactor"],"articleSection":["Haber"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.yazilimperver.com\/index.php\/2023\/02\/14\/haftalik-c-55-boost-asio-ii-temeller-ve-mimari\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.yazilimperver.com\/index.php\/2023\/02\/14\/haftalik-c-55-boost-asio-ii-temeller-ve-mimari\/","url":"https:\/\/www.yazilimperver.com\/index.php\/2023\/02\/14\/haftalik-c-55-boost-asio-ii-temeller-ve-mimari\/","name":"Haftal\u0131k C++ 55 - Boost Asio II - Temeller ve Mimari - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/#website"},"datePublished":"2023-02-14T18:34:35+00:00","dateModified":"2023-03-17T18:54:47+00:00","breadcrumb":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2023\/02\/14\/haftalik-c-55-boost-asio-ii-temeller-ve-mimari\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.yazilimperver.com\/index.php\/2023\/02\/14\/haftalik-c-55-boost-asio-ii-temeller-ve-mimari\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.yazilimperver.com\/index.php\/2023\/02\/14\/haftalik-c-55-boost-asio-ii-temeller-ve-mimari\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Ana sayfa","item":"https:\/\/www.yazilimperver.com\/"},{"@type":"ListItem","position":2,"name":"Haftal\u0131k C++ 55 &#8211; Boost Asio II &#8211; Temeller ve Mimari"}]},{"@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\/2730","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=2730"}],"version-history":[{"count":10,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/2730\/revisions"}],"predecessor-version":[{"id":2761,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/2730\/revisions\/2761"}],"wp:attachment":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media?parent=2730"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/categories?post=2730"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/tags?post=2730"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}