- •Введение
- •1 Параллельные и распределенные вычислительной системы
- •1.1 Понятие параллельной и распределенной вычислительной системы
- •1.2 Архитектура параллельной и распределенной вычислительной системы
- •1.3 Программное обеспечение для различных высокопроизводительных систем
- •1.4 Языки высокопроизводительных вычислений
- •1.5 Интегрированная среда разработки многопоточных приложений
- •2.1 Общие сведения об Oracle Solaris Studio ide
- •2.3 Профилирование приложений в Oracle Solaris Studio.
- •2.2 Профилировщик Performance Analyzer.
- •Заключение
- •Список используемых источников
- •Приложение а
- •Приложение б
Приложение б
Код программы 2.
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <pthread.h>
#include <unistd.h>
pthread_mutex_t lock1;
pthread_mutex_t lock2;
int count=0;
void* thread_func1(void *arg)
{
int i;
int id_t=*(int *) arg;
printf(" Thread %d Start \n",id_t);
pthread_mutex_lock(&lock1);
pthread_mutex_lock(&lock2);
++;
//sleep(1);
pthread_mutex_unlock(&lock2);
pthread_mutex_unlock(&lock1);
sleep(1);
printf(" Thread %d Finish \n",id_t);
}
void* thread_func2(void *arg)
count
{
int i;
int id_t=*(int *) arg;
printf(" Thread %d Start \n",id_t);
pthread_mutex_lock(&lock2);
pthread_mutex_lock(&lock1);
count++;
sleep(1);
pthread_mutex_unlock(&lock1);
pthread_mutex_unlock(&lock2);
printf(" Thread %d Finish \n",id_t);
}
int main(int argc, char**argv) {
pthread_t th1,th2;
pthread_mutex_init(&lock1,NULL);
pthread_mutex_init(&lock2,NULL);
int id1=1,id2=2,result;
result = pthread_create(&th1,NULL, thread_func1,&id1);
if(result!=0){
perror("er 111");
return EXIT_FAILURE;
}
result = pthread_create(&th2,NULL, thread_func2,&id2);
if(result!=0){
perror("er 222");
return EXIT_FAILURE;
}
while(count<2){
;
}
/*
result= pthread_join(th1,NULL);
if(result!=0){
perror("join 111");
return EXIT_FAILURE;
}
result= pthread_join(th2,NULL);
if(result!=0){
perror("join 222");
return EXIT_FAILURE;
}*/
pthread_mutex_destroy(&lock1);
pthread_mutex_destroy(&lock2);
printf(" DONE\n");
return EXIT_SUCCESS;
}
