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