# define _GNU_SOURCE
# include <stdio.h>
# include <math.h>
# include <stdlib.h>
# include <pthread.h>
# include <stdlib.h>
pthread_mutex_t mux = PTHREAD_MUTEX_INITIALIZER;
struct p2p{
int st;
int en;
};
void *primeChk(void* val);
int main()
{
pthread_t thread1,thread2,thread3,thread4;
struct p2p valu1,valu2,valu3,valu4;
int j,ret1,ret2,ret3,ret4;
cpu_set_t cpuset;
// pthread_setaffinity_np(thread, sizeof(cpu_set_t), &cpuset);
valu1.st = 1;
valu1.en = 5000;
valu2.st = 5001;
valu2.en = 10000;
valu3.st = 10001;
valu3.en = 15000;
valu4.st = 15001;
valu4.en = 20000;
// initialization
CPU_ZERO(&cpuset);
CPU_SET(0,&cpuset);
pthread_setaffinity_np(thread1, sizeof(cpu_set_t), &cpuset);
ret1 = pthread_create(&thread1,NULL,&primeChk,(void*)&valu1);
//CPU_ZERO(&cpuset);
CPU_SET(1,&cpuset);
pthread_setaffinity_np(thread2, sizeof(cpu_set_t), &cpuset);
ret2 = pthread_create(&thread2,NULL,&primeChk,(void*)&valu2);
// CPU_ZERO(&cpuset);
/*
CPU_SET(2,&cpuset);
pthread_setaffinity_np(thread3, sizeof(cpu_set_t), &cpuset);
ret3 = pthread_create(&thread3,NULL,&primeChk,(void*)&valu3);
CPU_SET(3,&cpuset);
pthread_setaffinity_np(thread4, sizeof(cpu_set_t), &cpuset);
ret4 = pthread_create(&thread4,NULL,&primeChk,(void*)&valu4);
*/
pthread_join(thread1,NULL);
pthread_join(thread2,NULL);
// pthread_join(thread3,NULL);
// pthread_join(thread4,NULL);
return 0;
}
void *primeChk(void *val)
{
struct p2p *valu = (struct p2p *)val;
int str,end,i,k,j,l,m;
// pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
str = valu->st;
end = valu->en;
if(str == 1)
printf("%d",++str);
pthread_mutex_lock(&mux);
for(i=str;i<=end;i++)
{
k = sqrt(i);l = 0;
for(j=2;j<=k+1;j++)
if(i % j == 0)
{
l = 1;break;
}
if(l == 0)printf(" %d",i);
}
pthread_mutex_unlock(&mux);
//pthread_getaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
// printf("\nSet returned by pthread_getaffinity_np() contained:\n");
// for (j = 0; j < CPU_SETSIZE; j++)
// if (CPU_ISSET(j, &cpuset))
// printf(" CPU %d\n", j);
}
Network programming and scalable micro-services in Azure
Comments
Post a Comment