İçeriğe geç

İplik(Thread) Kullanımı

#include<iostream>
#include<unistd.h>
#include<pthread.h>
using namespace std;
 
void* asal(void* arg)
{
	int* sayi = (int*) arg;
	int say = *sayi;
 
	int sayac=0;
	
	for(int i=2;i<=(say/2);i++)
	{
		if(say%i==0)
		{
			sayac++;
			break;
		}	
	}		
	if(sayac==0)
		cout<<say<<" sayisi asaldir"<<endl;
	sleep(1);	
}
 
void* fib(void* arg)
{
 
int* sayi = (int*) arg;
int say = *sayi;
 
int sayi1=0;
int sayi2=1;
int sayi3=0;
 
	while(sayi3<say)
	{
		sayi3=sayi1+sayi2;
		sayi1=sayi2;
		sayi2=sayi3;
		
		if(sayi3==say)
		{
			cout<<say<<" fib. sayisidir!"<<endl;
		}
	}
	sleep(1);
}

int main()
{
	int sayilar[]={5, 20, 11, 71, 91, 101, 13};
	
	int boyut=sizeof(sayilar)/sizeof(int);
	
	pthread_t calisan1[boyut],calisan2[boyut];
	
	cout<<"basladi"<<endl;
	
	int k =10;
	
	for(int i =0;i<boyut;i++)
	{	
		pthread_create(&calisan1[i],NULL,asal, &sayilar[i]); // olustu ve basladi
		pthread_create(&calisan2[i],NULL,fib, &sayilar[i]); // olustu ve basladi
	}
	
	for(int i=0;i<boyut;i++)
	{
		pthread_join(calisan1[i],NULL); // ilgili thread bitisini bekle
		pthread_join(calisan2[i],NULL); // ilgili thread bitisini bekle
	}
	cout<<"bitti"<<endl;
	sleep(3);	
}
Çıktı :

basladi
5 sayisi asaldir
5 fib. sayisidir!
11 sayisi asaldir
71 sayisi asaldir
101 sayisi asaldir
13 sayisi asaldir
13 fib. sayisidir!
bitti

 İplikler beraber başladıkları için çıktılar değişebilir. Bir başka çıktı örneği:
basladi
5 sayisi asaldir
11 sayisi asaldir
5 fib. sayisidir!
71 sayisi asaldir
101 sayisi asaldir
13 sayisi asaldir
13 fib. sayisidir!
bitti
Kategori:AnasayfaC++İşletim Sistemleri

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

× Nasıl yardımcı olabilirim?