Отчет_ompimpod8
.doc}
if(state1==false | state2==false | state3==false)errCount++;
if(errCount>0){send(sockets[sockets_index[k]], "Errors found", strlen("Errors found"), 0);}
else {send(sockets[sockets_index[k]], "Errors not found", strlen("Errors not found"), 0);}
close(sockets[sockets_index[k]]);
sockets[sockets_index[k]]=-1;
pthread_mutex_unlock( &mutexs[k] );
break;
}
}
}
static void *ini(void *arg)
{
for(int j=0; j<10; j++)
{
pthread_mutex_init(&mutexs[j],NULL);
}
}
int main()
{
pthread_t initial;
pthread_create(&initial,NULL , ini, NULL);
pthread_join(initial,NULL);
char *c1=new char[2];
for(int j=0; j<10; j++)
{
c1=new char[2];
sprintf(c1,"%d",j);
pthread_mutex_lock( &mutexs[j] );
pthread_create(&threads[j],NULL , funct, c1);
statesthread[j]=false;
}
int sock, listener;
sockaddr srvr_name;
int bytes_read;
memset(sockets,-1,sizeof(sockets));
listener = socket(AF_UNIX, SOCK_STREAM, 0);
if(listener < 0)
{
perror("socket");
return 0;
}
srvr_name.sa_family = AF_UNIX;
strcpy(srvr_name.sa_data, "socket.soc");
if(bind(listener, &srvr_name, sizeof(srvr_name)) < 0)
{
perror("bind");
return 0;
}
listen(listener, 40);
pthread_t fun;
fflush(stdin);
bool flag=true;
bool flag2;
int i,k,k2;
while(1)
{
flag=true;
for(i=0; i<sizeof(sockets)&&flag==true; i++)
{
if(sockets[i]==-1)
{
flag=false;
k=i;
}
}
if(flag==false)
{
sockets[k] = accept(listener, NULL, NULL);
if(sockets[k] < 0)
{
perror("accept");
return 0;
}
flag2=true;
for(int j=0; j<10&&flag2==true; j++)
{
if( statesthread[j]==false)
{
statesthread[j]=true;
flag2=false;
k2=j;
}
}
if(flag2==false)
{
sockets_index[k2]=k;
pthread_mutex_unlock( &mutexs[k2] );
}
}
}
return 0;
}
Вывод: В ходе выполнения данной лабораторной работы была разработана многопоточное приложение, выполняющее решение поставленной задачи.