{
pthread_create( &t1, NULL, thread1, NULL );
pthread_create( &t2, NULL, thread2, NULL );
pthread_join( t1, NULL );
pthread_join( t2, NULL );
return;
}
void *thread2( void *t )
{
int coid;
int status;
int pid=getpid();
char send_buf[25],
reply_buf[25];
printf("%d", pid );
coid=ConnectAttach(0,pid,1,0,0);
if (coid==-1){
printf("Error ConnectAttach\n");
perror (NULL);
int coid;
int status;
int pid=getppid();
char send_buf[25],
reply_buf[25];
printf("%d", pid );
coid=ConnectAttach(0,pid,1,0,0);
if (coid==-1){
printf("Error ConnectAttach\n");
perror (NULL);
exit (EXIT_FAILURE);
}
; strcpy(send_buf, "Client: Answer");
; printf("\nCLIENT: I send [%s]\n", &send_buf );
status=MsgSend(coid, &send_buf, sizeof(send_buf), &reply_buf, sizeof(reply_buf));
if (status==-1){
printf("Error MsgSend\n");
perror (NULL);
exit (EXIT_FAILURE);
}
if(strlen(reply_buf)>0){
printf("Pr : \"%s\"\n", reply_buf);
}
printf("\nEnd Client\n");
ConnectDetach(coid);
return EXIT_SUCCESS;
exit (EXIT_FAILURE);
}
strcpy(send_buf, "Client: Answer");
printf("\nCLIENT: I send [%s]\n", &send_buf );
status=MsgSend(coid, &send_buf, sizeof(send_buf), &reply_buf, sizeof(reply_buf));
if (status==-1){
printf("Error MsgSend\n");
perror (NULL);
exit (EXIT_FAILURE);
}
if(strlen(reply_buf)>0){
printf("Pr : \"%s\"\n", reply_buf);
}
printf("\nEnd Client\n");
ConnectDetach(coid);
return EXIT_SUCCESS;
}
void *thread1( void *t )
{
int rcvid, chid, pid, ppid;
char receive_buf[25], reply_buf[25];
chid=ChannelCreate(0);
while(1){
rcvid=MsgReceive(chid, &receive_buf, sizeof(receive_buf), NULL);
printf("\nSERVER: I receive [%s]\n", &receive_buf );
strcpy(reply_buf, "Answer");
printf("\nSERVER: I reply [%s]\n", &reply_buf );
MsgReply(rcvid, 777, &reply_buf, sizeof(reply_buf));
}
ChannelDestroy(chid);
printf("\nEnd server\n" );
return EXIT_SUCCESS;
}
Рис.17
Рис. 18.
На рисунках 8, 9 представлен обмен сообщениями между потоками одного процесса.
Рис. 19
На рис. 19 выделены моменты отправки, приема, ответа на сообщение при взаимодействии потоков. Время реакции сервера – 1.386 мс, что в 4 раза больше, чем при обмене между независимыми процессами (стр. 10), что говорит об удобстве и высокой производительности программ с использованием механизма регистрации имени.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.