﻿
{"id":4722,"date":"2016-07-09T06:52:43","date_gmt":"2016-07-09T06:52:43","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=4722"},"modified":"2016-07-13T11:13:13","modified_gmt":"2016-07-13T11:13:13","slug":"c-ile-multi-thread-programlama-temelleri","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/c-ile-multi-thread-programlama-temelleri\/","title":{"rendered":"C# \u0130le Multi Thread Programlama Temelleri"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Uzun zamand\u0131r farkl\u0131 t\u00fcrevlerde asenkron mimari \u00fczerine \u00e7al\u0131\u015fmalar ger\u00e7ekle\u015ftirmekteyim. Siz de\u011ferli okuyucular\u0131m\u0131zdan gelen bir \u00e7ok istek \u00fczerine bu konulara detayl\u0131 bir girizgah yapmak istedim. \u00d6ncelikle\u00a0Multi Thread Programlaman\u0131n temellerini bu i\u00e7eri\u011fimizde olu\u015fturacak, zamanla di\u011fer makalelerimizde\u00a0Multi Thread Programlama \u00fczerine derinle\u015fece\u011fiz.<\/p>\n<p>Konuya ba\u015flamadan \u00f6nce bilmenizi istiyorum ki,\u00a0Multi Thread Programlamada temel kavramlarla birlikte teorik boyut, konunun hakimiyeti ve anla\u015f\u0131labilmesi i\u00e7in olduk\u00e7a \u00f6nemlidir. O y\u00fczden usanmadan bu tarz konuyla alakal\u0131 i\u00e7eriklerimizi\u00a0hatmetmenizi ve makalelerdeki kronolojiyi kararl\u0131 bir \u015fekilde takip etmenizi \u00f6neriyorum. Hem\u00a0Multi Thread ile ilgili gelen t\u00fcm i\u00e7erikleri bu makale i\u00e7erisinde refere edece\u011fimden dolay\u0131 rahat bir \u015fekilde kronolojik yaz\u0131lar\u0131 takip edebileceksiniz.<\/p>\n<p>Evet art\u0131k konuya giri\u015f yapabiliriz.<\/p>\n<p>Bir uygulama d\u00fc\u015f\u00fcn\u00fcn(<em>siz yahut ba\u015fkas\u0131 yazm\u0131\u015f olabilir<\/em>), bu uygulaman\u0131n sabit diskte \u00e7al\u0131\u015fmadan, yavan bir \u015fekilde duran haline bizler &#8220;<em><strong>Program<\/strong><\/em>&#8221; diyoruz. Biliyorsunuz ki, bilgisayarda yap\u0131lan t\u00fcm i\u015flemler ge\u00e7ici bellek dedi\u011fimiz RAM&#8217;de ceyran etti\u011finden, o program\u0131 \u00e7al\u0131\u015ft\u0131r\u0131p RAM&#8217;e y\u00fcklendi\u011fi andan itibaren ki haline de &#8220;<em><strong>Proses(\u0130\u015flem)<\/strong><\/em>&#8221; demekteyiz.<\/p>\n<p>Bilgisayar\u0131n bir prosesi \u00e7al\u0131\u015ft\u0131rmas\u0131n\u0131 yarayan birimine CPU(Mikro \u0130\u015flemci) diyoruz. Bir CPU, herhangi bir T an\u0131nda sade ve sadece bir adet prosesi \u00e7al\u0131\u015ft\u0131rabilir. \u0130\u015fte CPU&#8217;lar\u0131n bu \u00e7al\u0131\u015fma bi\u00e7imine <strong><em>Single Processing(Tek \u0130\u015flemli \u00c7al\u0131\u015fma)<\/em><\/strong> denmektedir. (<em>Ek bilgi olarak; CPU&#8217;yu bu \u015fekilde kullanarak \u00e7al\u0131\u015fan i\u015fletim sistemlerine ise Single Processing(Tek \u0130\u015flemli) \u0130\u015fletim Sistemi denmektedir.<\/em>)<\/p>\n<p>G\u00fcn\u00fcm\u00fczde tek i\u015flemli CPU&#8217;lar yerlerini <em><strong>Multi Processing(\u00c7ok \u0130\u015flemli\u00a0\u00c7al\u0131\u015fma)<\/strong><\/em> yahut <em><strong>Multi Tasking(\u00c7ok G\u00f6revli \u00c7al\u0131\u015fma)<\/strong><\/em> CPU&#8217;lara b\u0131rakm\u0131\u015ft\u0131r.<\/p>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/07\/C-\u0130le-Multi-Thread-Programlama-Temelleri.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-4727\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/07\/C-\u0130le-Multi-Thread-Programlama-Temelleri-277x300.png\" alt=\"C# \u0130le Multi Thread Programlama Temelleri\" width=\"277\" height=\"300\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/07\/C-\u0130le-Multi-Thread-Programlama-Temelleri-277x300.png 277w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/07\/C-\u0130le-Multi-Thread-Programlama-Temelleri.png 361w\" sizes=\"auto, (max-width: 277px) 100vw, 277px\" \/><\/a><\/p>\n<p>Yukar\u0131daki ekran g\u00f6r\u00fcnt\u00fcs\u00fcne bakarsan\u0131z e\u011fer ayn\u0131 anda(T an\u0131nda) birden fazla process \u00e7al\u0131\u015fmaktad\u0131r. \u0130\u015fte bunu yapabilen Multi Processing yahut Multi Tasking \u00f6zelliklerdir.<\/p>\n<p>Birden fazla processin ayn\u0131 anda \u00e7al\u0131\u015f\u0131yormu\u015f gibi g\u00f6z\u00fckmesinin nedeni i\u015fletim sistemine ait \u00f6zel bir mekanizman\u0131n \u00f6zelli\u011fidir. Bu mekanizma, processleri belirli aral\u0131klarla(<em>milisaniye<\/em>) periyodik olarak \u00e7al\u0131\u015ft\u0131rmaktad\u0131r ve bu y\u00f6nteme <em><strong>Zaman Payla\u015f\u0131ml\u0131 \u00c7al\u0131\u015fma<\/strong><\/em> denmektedir.<\/p>\n<p>Bu mekanizma sayesinde birden fazla process CPU taraf\u0131ndan belirli bir s\u00fcre ile s\u0131ral\u0131 olarak \u00e7al\u0131\u015ft\u0131r\u0131lmaktad\u0131r. \u00c7al\u0131\u015fma s\u00fcresi her sistem i\u00e7in farkl\u0131l\u0131k g\u00f6steren bu s\u00fcreye <em><strong>Quanta S\u00fcresi<\/strong><\/em> denmektedir.(<em>\u00d6rn; Win32 sistemleri i\u00e7in quanta s\u00fcresi 20 milisaniyedir.<\/em>)<\/p>\n<p>Yukar\u0131daki paragrafta birden fazla process CPU taraf\u0131ndan belirli bir s\u00fcre ile s\u0131ral\u0131 olarak\u00a0\u00e7al\u0131\u015ft\u0131r\u0131lmaktad\u0131r dedik. \u0130\u015fte s\u0131ras\u0131 gelen processin \u00e7al\u0131\u015fmas\u0131nada &#8220;<em><strong>Prosessin \u00c7izelgeye Girmesi<\/strong><\/em>&#8221; denmektedir.<\/p>\n<p>\u0130\u015fletim sistemleri processleri s\u0131ral\u0131 olarka \u00e7al\u0131\u015ft\u0131rabilmek ad\u0131na <em><strong>D\u00f6ng\u00fcsel \u00c7izelgeleme<\/strong><\/em> isimli bir algoritma kullan\u0131r.\u00a0D\u00f6ng\u00fcsel \u00c7izelgeleme ile bir processin durdurulup s\u0131radaki processin \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131 ise &#8220;<em><strong>G\u00f6revler Aras\u0131 Ge\u00e7i\u015f(Task Switch)<\/strong><\/em>&#8221; olarak adland\u0131r\u0131l\u0131r.<\/p>\n<p>S\u0131ral\u0131 bir \u015fekilde \u00e7al\u0131\u015ft\u0131r\u0131lacak processlerin \u00f6nceli\u011fi bu mekanizmada \u00f6nemlidir. \u00d6rne\u011fin, Wind32 sistemleri processleri 0 &#8211; 31 aral\u0131\u011f\u0131nda farkl\u0131 \u00f6ncelik d\u00fczeyine g\u00f6re s\u0131n\u0131fland\u0131rmaktad\u0131r. E\u011fer ki farkl\u0131 \u00f6ncelik d\u00fczeylerine sahip prosesler bir arada \u00e7al\u0131\u015fmak zorunda kal\u0131rlarsa, \u00e7al\u0131\u015fma \u015fekli ve algoritmas\u0131 farkl\u0131 olacak, d\u00f6ng\u00fcsel \u00e7izelgeleme de\u011fil <em><strong>\u00d6ncelikli D\u00f6ng\u00fcsel \u00c7izelgeleme<\/strong><\/em> algoritmas\u0131 kullan\u0131lacakt\u0131r.<\/p>\n<p>Evet,\u00a0Multi Thread Programlamaya bu i\u00e7eri\u011fimiz ile bir temel atm\u0131\u015f olduk. Sonraki yaz\u0131lar\u0131m\u0131zda Thread Kavram\u0131,\u00a0Multi Thread \u00c7al\u0131\u015fma ve\u00a0Multi Thread \u00c7al\u0131\u015fman\u0131n Avantaj ve Dezavantajlar\u0131 ve bunlar\u0131n ard\u0131ndan da programatik k\u0131sm\u0131 ilgilendiren yap\u0131lar\u0131 ele alaca\u011f\u0131z.<\/p>\n<p>\u015eimdilik ho\u015f\u00e7akal\u0131n&#8230;<\/p>\n<p>\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<h4>Multi Thread Programlama Yaz\u0131 Dizisi<\/h4>\n<ol>\n<li><a href=\"http:\/\/www.gencayyildiz.com\/blog\/c-ile-multi-thread-programlama-temelleri\/\" target=\"_blank\">C# \u0130le Multi Thread Programlama Temelleri<\/a><\/li>\n<li><a href=\"http:\/\/www.gencayyildiz.com\/blog\/c-ile-multi-thread-programlamada-thread-kavrami\/\" target=\"_blank\">C# \u0130le Multi Thread Programlamada &#8220;Thread&#8221; Kavram\u0131<\/a><\/li>\n<li><a href=\"http:\/\/www.gencayyildiz.com\/blog\/multi-thread-calismanin-avantaj-ve-dezavantajlari\/\" target=\"_blank\">Multi Thread \u00c7al\u0131\u015fman\u0131n Avantaj ve Dezavantajlar\u0131<\/a><\/li>\n<li><a href=\"http:\/\/www.gencayyildiz.com\/blog\/c-ile-multi-thread-programlamada-system-threading-thread-sinifi\/\" target=\"_blank\">C# \u0130le Multi Thread Programlamada System.Threading.Thread S\u0131n\u0131f\u0131<\/a><\/li>\n<\/ol>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Uzun zamand\u0131r farkl\u0131 t\u00fcrevlerde asenkron mimari \u00fczerine \u00e7al\u0131\u015fmalar ger\u00e7ekle\u015ftirmekteyim. Siz de\u011ferli okuyucular\u0131m\u0131zdan gelen bir \u00e7ok istek \u00fczerine bu konulara detayl\u0131 bir girizgah yapmak istedim. \u00d6ncelikle\u00a0Multi Thread Programlaman\u0131n temellerini bu i\u00e7eri\u011fimizde olu\u015fturacak, zamanla di\u011fer&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":3223,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[1236,1331,1342,1340,1335,1346,1347,1333,1336,1339,1341,1330,1329,1349,1334,1332,1345,1344,1337,1348,1338,1235,1343],"class_list":["post-4722","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c-sharp-c","tag-asenkron-mimari","tag-asenkron-programlama","tag-cok-gorevli-calisma","tag-cok-islemli-calisma","tag-cpu","tag-dongusel-cizelgeleme","tag-gorevler-arasi-gecis","tag-islem","tag-mikro-islemi","tag-multi-processing","tag-multi-tasking","tag-multi-thread","tag-multi-thread-programlama","tag-oncelikli-dongusel-cizelgeleme","tag-program","tag-proses","tag-prosessin-cizelgeye-girmesi","tag-quanta-suresi","tag-single-processing","tag-task-switch","tag-tek-islemli-calisma","tag-thread","tag-zaman-paylasimli-calisma"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/4722","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=4722"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/4722\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/3223"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=4722"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=4722"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=4722"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}