Thread Nedir?
Bir thread, bir process içerisindeki yürütme birimidir. Bir process'in aynı anda birden fazla işi yapmasını sağlayan yapılardır. Bir process, yapısında birden fazla thread bulundurabilir, bu yapılara multithreading denir.
Process Nedir?
Process vs Thread
- Bir thread’in oluÅŸturulması ve sonlandırılması process’lere göre daha kısa sürer
- Process’ler birbirinden izole bir ÅŸekilde çalışırken, thread’ler aynı bellek kaynağını paylaşır
- Process’ler, thread’lere göre daha fazla kaynak tüketimi yaparlar
- Bir process bloklanırsa baÅŸka bir process iÅŸlemini gerçekleÅŸtiremez. Öncelikle ilk process’in iÅŸini bitirmesini bekler. Ancak bu durum thread’lerde geçerli deÄŸildir. Bir thread baÅŸka bir thread bloklansa bile çalışabilir.
- Ölçeklenebilirlik açısından thread’ler daha avantajlıdır. Process’lerin ölçeklendirilmesi için çok iÅŸlemcili yapı gerekmektedir. Bu da processler’de ölçeklendirmenin donanımsal olarak yapıldığını bizlere gösteriyor. thread’lerde ise çok çekirdekli iÅŸlemcilerde birden fazla thread farklı çekirdeklerde çalıştırılabilir.
C Programlamada Thread OluÅŸturma
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
void *worker_thread(void *arg)
{
printf("This
is worker_thread()\n");
return NULL;
}
int main()
{
pthread_t
my_thread;
int ret;
printf("In
main: creating thread\n");
ret = pthread_create(&my_thread,
NULL, &worker_thread, NULL);
if(ret != 0) {
printf("Error: pthread_create() failed\n");
}
pthread_join(my_thread,
NULL);
return 0;
- İlki, my_thread için bir pointer,
- Ä°kincisi, nitelikleri belirtir,
- Üçüncüsü, thread için yürütülecek olan fonksiyon,
- Dördüncüsü, worker_thread fonksiyonuna argüman göndermek için kullanılır.
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#define N 5
void *worker_thread(void *arg)
{
printf("This
is worker_thread #%ld\n", (long)arg);
return NULL;
}
int main()
{
pthread_t
my_thread[N];
long id;
int ret;
printf("In
main: creating thread\n");
for(id = 1; id
<= N; id++) {
ret = pthread_create(&my_thread[id], NULL,
worker_thread, (void*)id);
if(ret !=
0) {
printf("Error:
pthread_create() failed\n");
}
}
for(id = 1; id
<= N; id++) {
pthread_join(my_thread[id],
NULL);
}
return 0;
}
Çıktı:
Kaynaklar:
http://alpegeakarsu.com/process-ve-thread-nedir/
https://demirten.gitbooks.io/linux-sistem-programlama/content/threads/types.html
https://devnot.com/2021/thread-nedir-detayli-bir-thread-incelemesi/
https://www.elektrikport.com/teknik-kutuphane/thread-nedir-thread-cde-nasil-kullanilir-ve-nasil-yazilir/23510#ad-image-0