İşletim Sistemleri (Bahar-2016) Hafta-13

#include<iostream>
#include<pthread.h>
#include<unistd.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);	
}

 

Share