{"id":60,"date":"2017-03-04T08:48:45","date_gmt":"2017-03-04T08:48:45","guid":{"rendered":"http:\/\/damrakoc.com\/blog\/?p=60"},"modified":"2020-01-17T15:50:39","modified_gmt":"2020-01-17T15:50:39","slug":"createthread-multithreading-criticalsection-waitforsingleobject-aciklamalari","status":"publish","type":"post","link":"http:\/\/damrakoc.com\/blog\/createthread-multithreading-criticalsection-waitforsingleobject-aciklamalari\/","title":{"rendered":"C++ CreateThread, MultiThreading, CriticalSection, WaitforSingleObject a\u00e7\u0131klamalar\u0131"},"content":{"rendered":"<p>Faydas\u0131 olabilir diye C++ payla\u015f\u0131m yapmaya \u00e7al\u0131\u015f\u0131yorum.<br \/>\nBu konumda, konu ba\u015fl\u0131\u011f\u0131ndaki <strong>windows API<\/strong> (<strong>Application Programming Interface<\/strong>) <strong>multithreading\u00a0<\/strong>\u00a0fonksiyonlar\u0131na \u00f6rnek vermek istiyorum.<\/p>\n<p><strong>Thread<\/strong> nedir?\u00a0<strong>multithread<\/strong> nedir?<br \/>\n\u00d6rne\u011fin y\u00fcr\u00fcrken m\u00fczik dinleyip ayn\u0131 anda sak\u0131z \u00e7i\u011fneyen \u00e7ocuk, 3 farkl\u0131 ba\u011f\u0131ms\u0131z i\u015f yapar. 3 tane thread olarak d\u00fc\u015f\u00fcnebiliriz.<br \/>\nHer thread ayr\u0131 bir i\u015f yap\u0131yor ama ayn\u0131 v\u00fccutta ve ayn\u0131 beyinden y\u00f6netiliyor.<br \/>\nBu <strong>multithreading<\/strong> tan\u0131m\u0131d\u0131r.<\/p>\n<p><strong>CreateThread<\/strong> ile bir fonksiyonu, ana program\u0131 bekletmeden i\u015fletmek m\u00fcmk\u00fcn.<br \/>\n\u00d6rne\u011fin, ana programda 10sn bekletme koydu\u011fumuz zaman t\u00fcm program donuyor.<br \/>\nAma CreateThread ile bir thread olu\u015fturup, onun i\u00e7ine 10sn bekletme yaz\u0131nca, sadece o thread donuyor, ana program (main thread) donmuyor.<\/p>\n<p><strong>WaitForSingleObject<\/strong> (A\u00e7\u0131lm\u0131\u015f thread handle, Bekleme s\u00fcresi);<br \/>\nBu fonksiyon ise, ana programda thread olu\u015fturma, CreateThread yapt\u0131ktan hemen sonra kod olarak eklenir.<br \/>\nOlu\u015fturulan threadin bitmesini bekler. Bekleme s\u00fcresinden fazla beklerse ana program\u0131 kald\u0131g\u0131 sat\u0131rdan devam ettirir. While(1) i\u00e7erisinde printf ile &#8220;ben thread1&#8221; olarak s\u00fcrekli yaz\u0131 basan bir thread&#8217;\u0131 olu\u015fturduktan sonra waitforsingleobject(infinite=sonsuz ,bitene kadar bekle demektir) yaparsak, o while1 bitmeyece\u011fi i\u00e7in, ana program waitforsingleobjectten sonra gelen kodlar\u0131 i\u015fleyemeyecektir.<\/p>\n<p><strong>CriticalSection <\/strong>\u00d6rne\u011fin bir programda bir diziye her thread 1-2-3 rakam\u0131 yaz\u0131yor diyelim. Yukar\u0131daki y\u00fcr\u00fcyen \u00e7ocuk \u00f6rne\u011fine g\u00f6re, her thread kafas\u0131na g\u00f6re anl\u0131k olarak diziye numara yazacakt\u0131r. Ana program ise bu diziyi anl\u0131k olarak printf ile g\u00f6steriyor olsun, sonu\u00e7 olarak belirli bir anda dizide ne mevcut bilinemez;<\/p>\n<p>peki her thread i\u00e7in sadece &#8220;ben threadX&#8221; diye yaz\u0131 bast\u0131rstsak ve ard\u0131ndan waitforsingleobject koyarsak ne olur?<br \/>\nCevap: Her thread i\u015fini g\u00f6r\u00fcr, \u00e7\u0131kar, waitforsingleobject deaktif olup sonraki kod sat\u0131r\u0131 i\u015flenir.<\/p>\n<p>Critical section ne yapar?<br \/>\nCritical section&#8217;a giren bir thread, ayn\u0131 programa(\u00e7al\u0131\u015fan exeye) ba\u011fl\u0131 t\u00fcm threadleri anl\u0131k olarak kesip, L<strong>eaveCriticalSection<\/strong> komutuna kadar durdurur. B\u00f6ylece bir thread, diziye yaz\u0131 yazmaya ba\u015flad\u0131\u011f\u0131 an, \u00f6b\u00fcrk\u00fcler ona m\u00fcdahele edemedi\u011finden kar\u0131\u015f\u0131kl\u0131k \u00f6nlenmi\u015f olur.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Faydas\u0131 olabilir diye C++ payla\u015f\u0131m yapmaya \u00e7al\u0131\u015f\u0131yorum. Bu konumda, konu ba\u015fl\u0131\u011f\u0131ndaki windows API (Application Programming Interface) multithreading\u00a0\u00a0fonksiyonlar\u0131na \u00f6rnek vermek istiyorum. Thread nedir?\u00a0multithread nedir? \u00d6rne\u011fin y\u00fcr\u00fcrken m\u00fczik dinleyip ayn\u0131 anda sak\u0131z \u00e7i\u011fneyen \u00e7ocuk, 3 farkl\u0131 ba\u011f\u0131ms\u0131z i\u015f yapar. 3 tane thread olarak d\u00fc\u015f\u00fcnebiliriz. Her thread ayr\u0131 bir i\u015f yap\u0131yor ama ayn\u0131 v\u00fccutta ve ayn\u0131 beyinden y\u00f6netiliyor. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-60","post","type-post","status-publish","format-standard","hentry","category-c"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>C++ CreateThread, MultiThreading, CriticalSection, WaitforSingleObject a\u00e7\u0131klamalar\u0131 - Damra KO\u00c7<\/title>\n<meta name=\"description\" content=\"Thread nedir? multithread nedir? \u00d6rne\u011fin y\u00fcr\u00fcrken m\u00fczik dinleyip ayn\u0131 anda sak\u0131z \u00e7i\u011fneyen \u00e7ocuk, 3 farkl\u0131 ba\u011f\u0131ms\u0131z i\u015f yapar.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/damrakoc.com\/blog\/createthread-multithreading-criticalsection-waitforsingleobject-aciklamalari\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C++ CreateThread, MultiThreading, CriticalSection, WaitforSingleObject a\u00e7\u0131klamalar\u0131 - Damra KO\u00c7\" \/>\n<meta property=\"og:description\" content=\"Thread nedir? multithread nedir? \u00d6rne\u011fin y\u00fcr\u00fcrken m\u00fczik dinleyip ayn\u0131 anda sak\u0131z \u00e7i\u011fneyen \u00e7ocuk, 3 farkl\u0131 ba\u011f\u0131ms\u0131z i\u015f yapar.\" \/>\n<meta property=\"og:url\" content=\"http:\/\/damrakoc.com\/blog\/createthread-multithreading-criticalsection-waitforsingleobject-aciklamalari\/\" \/>\n<meta property=\"og:site_name\" content=\"Damra KO\u00c7\" \/>\n<meta property=\"article:published_time\" content=\"2017-03-04T08:48:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-01-17T15:50:39+00:00\" \/>\n<meta name=\"author\" content=\"damrakoc\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@damra_koc\" \/>\n<meta name=\"twitter:site\" content=\"@damra_koc\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"damrakoc\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"http:\/\/damrakoc.com\/blog\/createthread-multithreading-criticalsection-waitforsingleobject-aciklamalari\/\",\"url\":\"http:\/\/damrakoc.com\/blog\/createthread-multithreading-criticalsection-waitforsingleobject-aciklamalari\/\",\"name\":\"C++ CreateThread, MultiThreading, CriticalSection, WaitforSingleObject a\u00e7\u0131klamalar\u0131 - Damra KO\u00c7\",\"isPartOf\":{\"@id\":\"http:\/\/damrakoc.com\/blog\/#website\"},\"datePublished\":\"2017-03-04T08:48:45+00:00\",\"dateModified\":\"2020-01-17T15:50:39+00:00\",\"author\":{\"@id\":\"http:\/\/damrakoc.com\/blog\/#\/schema\/person\/c0aef33e15396f85a26d08495c742b8b\"},\"description\":\"Thread nedir? multithread nedir? \u00d6rne\u011fin y\u00fcr\u00fcrken m\u00fczik dinleyip ayn\u0131 anda sak\u0131z \u00e7i\u011fneyen \u00e7ocuk, 3 farkl\u0131 ba\u011f\u0131ms\u0131z i\u015f yapar.\",\"breadcrumb\":{\"@id\":\"http:\/\/damrakoc.com\/blog\/createthread-multithreading-criticalsection-waitforsingleobject-aciklamalari\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/damrakoc.com\/blog\/createthread-multithreading-criticalsection-waitforsingleobject-aciklamalari\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/damrakoc.com\/blog\/createthread-multithreading-criticalsection-waitforsingleobject-aciklamalari\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/damrakoc.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C++ CreateThread, MultiThreading, CriticalSection, WaitforSingleObject a\u00e7\u0131klamalar\u0131\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/damrakoc.com\/blog\/#website\",\"url\":\"http:\/\/damrakoc.com\/blog\/\",\"name\":\"Damra KO\u00c7\",\"description\":\"Software Developer\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/damrakoc.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"http:\/\/damrakoc.com\/blog\/#\/schema\/person\/c0aef33e15396f85a26d08495c742b8b\",\"name\":\"damrakoc\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/damrakoc.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1a5d82872160ecc5a366412de9d017ead27f16fcfce7c8e46532199f18145f06?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1a5d82872160ecc5a366412de9d017ead27f16fcfce7c8e46532199f18145f06?s=96&d=mm&r=g\",\"caption\":\"damrakoc\"},\"url\":\"http:\/\/damrakoc.com\/blog\/author\/damrakoc\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"C++ CreateThread, MultiThreading, CriticalSection, WaitforSingleObject a\u00e7\u0131klamalar\u0131 - Damra KO\u00c7","description":"Thread nedir? multithread nedir? \u00d6rne\u011fin y\u00fcr\u00fcrken m\u00fczik dinleyip ayn\u0131 anda sak\u0131z \u00e7i\u011fneyen \u00e7ocuk, 3 farkl\u0131 ba\u011f\u0131ms\u0131z i\u015f yapar.","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":"http:\/\/damrakoc.com\/blog\/createthread-multithreading-criticalsection-waitforsingleobject-aciklamalari\/","og_locale":"en_US","og_type":"article","og_title":"C++ CreateThread, MultiThreading, CriticalSection, WaitforSingleObject a\u00e7\u0131klamalar\u0131 - Damra KO\u00c7","og_description":"Thread nedir? multithread nedir? \u00d6rne\u011fin y\u00fcr\u00fcrken m\u00fczik dinleyip ayn\u0131 anda sak\u0131z \u00e7i\u011fneyen \u00e7ocuk, 3 farkl\u0131 ba\u011f\u0131ms\u0131z i\u015f yapar.","og_url":"http:\/\/damrakoc.com\/blog\/createthread-multithreading-criticalsection-waitforsingleobject-aciklamalari\/","og_site_name":"Damra KO\u00c7","article_published_time":"2017-03-04T08:48:45+00:00","article_modified_time":"2020-01-17T15:50:39+00:00","author":"damrakoc","twitter_card":"summary_large_image","twitter_creator":"@damra_koc","twitter_site":"@damra_koc","twitter_misc":{"Written by":"damrakoc","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"http:\/\/damrakoc.com\/blog\/createthread-multithreading-criticalsection-waitforsingleobject-aciklamalari\/","url":"http:\/\/damrakoc.com\/blog\/createthread-multithreading-criticalsection-waitforsingleobject-aciklamalari\/","name":"C++ CreateThread, MultiThreading, CriticalSection, WaitforSingleObject a\u00e7\u0131klamalar\u0131 - Damra KO\u00c7","isPartOf":{"@id":"http:\/\/damrakoc.com\/blog\/#website"},"datePublished":"2017-03-04T08:48:45+00:00","dateModified":"2020-01-17T15:50:39+00:00","author":{"@id":"http:\/\/damrakoc.com\/blog\/#\/schema\/person\/c0aef33e15396f85a26d08495c742b8b"},"description":"Thread nedir? multithread nedir? \u00d6rne\u011fin y\u00fcr\u00fcrken m\u00fczik dinleyip ayn\u0131 anda sak\u0131z \u00e7i\u011fneyen \u00e7ocuk, 3 farkl\u0131 ba\u011f\u0131ms\u0131z i\u015f yapar.","breadcrumb":{"@id":"http:\/\/damrakoc.com\/blog\/createthread-multithreading-criticalsection-waitforsingleobject-aciklamalari\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/damrakoc.com\/blog\/createthread-multithreading-criticalsection-waitforsingleobject-aciklamalari\/"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/damrakoc.com\/blog\/createthread-multithreading-criticalsection-waitforsingleobject-aciklamalari\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/damrakoc.com\/blog\/"},{"@type":"ListItem","position":2,"name":"C++ CreateThread, MultiThreading, CriticalSection, WaitforSingleObject a\u00e7\u0131klamalar\u0131"}]},{"@type":"WebSite","@id":"http:\/\/damrakoc.com\/blog\/#website","url":"http:\/\/damrakoc.com\/blog\/","name":"Damra KO\u00c7","description":"Software Developer","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/damrakoc.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"http:\/\/damrakoc.com\/blog\/#\/schema\/person\/c0aef33e15396f85a26d08495c742b8b","name":"damrakoc","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/damrakoc.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1a5d82872160ecc5a366412de9d017ead27f16fcfce7c8e46532199f18145f06?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1a5d82872160ecc5a366412de9d017ead27f16fcfce7c8e46532199f18145f06?s=96&d=mm&r=g","caption":"damrakoc"},"url":"http:\/\/damrakoc.com\/blog\/author\/damrakoc\/"}]}},"_links":{"self":[{"href":"http:\/\/damrakoc.com\/blog\/wp-json\/wp\/v2\/posts\/60","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/damrakoc.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/damrakoc.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/damrakoc.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/damrakoc.com\/blog\/wp-json\/wp\/v2\/comments?post=60"}],"version-history":[{"count":3,"href":"http:\/\/damrakoc.com\/blog\/wp-json\/wp\/v2\/posts\/60\/revisions"}],"predecessor-version":[{"id":117,"href":"http:\/\/damrakoc.com\/blog\/wp-json\/wp\/v2\/posts\/60\/revisions\/117"}],"wp:attachment":[{"href":"http:\/\/damrakoc.com\/blog\/wp-json\/wp\/v2\/media?parent=60"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/damrakoc.com\/blog\/wp-json\/wp\/v2\/categories?post=60"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/damrakoc.com\/blog\/wp-json\/wp\/v2\/tags?post=60"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}