Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2011, 17:28   #1
NastyaV
Пользователь
 
Регистрация: 29.09.2010
Сообщений: 30
Восклицание Организовать доступ к общей переменой в потоках

Код программы:

Код:
#include <stdio.h>
#include <time.h>
#include <pthread.h>
void task(double*);
double interval,pers,dpers;
pthread_mutex_t mutex_1;
int main() {
	pthread_t Thread[3];
	clock_t t[2];
	double b[9];
	b[0]=.01;
	b[2]=b[5]=b[8]=0.;
	b[1]=b[3]=60.;
	b[4]=b[6]=200.;
	b[7]=480.;
	pers=0.;
	interval=b[7]-b[0];
	dpers=.1;
	pthread_mutex_init(&mutex_1,NULL);
	t[0]=clock();
	pthread_create(Thread,NULL,(void*)task,(void*)b);
	pthread_create(Thread+1,NULL,(void*)task,(void*)(b+3));
	pthread_create(Thread+2,NULL,(void*)task,(void*)(b+6));
	pthread_join(Thread[0],NULL);
	pthread_join(Thread[1],NULL);
	pthread_join(Thread[2],NULL);
	t[1]=clock();
	pthread_mutex_destroy(&mutex_1);
	printf("Hi: %g sec Res: %g\r\n",(double)(t[1]-t[0])/(double)CLOCKS_PER_SEC,(b[2]+b[5]+b[8]));
	return 0;
}

void task(double *b)
{
double i, st, s, p, ast, c;
clock_t t[2];
t[0]=clock();
st=.00001;
s=c=0.;
pthread_mutex_lock(&mutex_1);
ast=interval/st;
p=ast*dpers;
pthread_mutex_unlock(&mutex_1);
for(i=b[0];i<b[1];i+=st)
{
s+=(1./i+1./(i+st))*.5*st;
c+=1.;
if(c>(.5*p)){
	if(pthread_mutex_trylock(&mutex_1)==0){
pers+=c/ast;
pthread_mutex_unlock(&mutex_1);
c=0.;
printf(".");
	}
       }
}
b[2]=s;
t[1]=clock();
printf("from %g to %g ",b[0],b[1]);
printf("TID %d: %g sec Res: %g\r\n",(int)pthread_self(),(double)(t[1]-t[0])/(double)CLOCKS_PER_SEC,s);
}
Задание:
1) Обьяснить код программи, что каждая строка делает.
2) Организовать доступ к общей переменой в потоках.
3) Виводила процент вычисления на екран и обновляла на каждом цыкле результат.(знаю токо go to xy(x,y))

Последний раз редактировалось JTG; 24.03.2011 в 15:31. Причина: ошыбка
NastyaV вне форума Ответить с цитированием
Старый 23.03.2011, 18:13   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,821
По умолчанию

фриланс ниже
p51x вне форума Ответить с цитированием
Старый 23.03.2011, 19:32   #3
NastyaV
Пользователь
 
Регистрация: 29.09.2010
Сообщений: 30
По умолчанию

Извини я не поняла. Подскажыте что нада дописать в код?
NastyaV вне форума Ответить с цитированием
Старый 24.03.2011, 11:34   #4
NastyaV
Пользователь
 
Регистрация: 29.09.2010
Сообщений: 30
По умолчанию

Хто может обяснить код программы. Очень нада ваша помощь!!!
NastyaV вне форума Ответить с цитированием
Старый 24.03.2011, 14:44   #5
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
фриланс ниже
Полностью согласен.
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 24.03.2011, 19:52   #6
NastyaV
Пользователь
 
Регистрация: 29.09.2010
Сообщений: 30
По умолчанию

ХЕЛЛП НАДА НА ЗАВТРА!!!
NastyaV вне форума Ответить с цитированием
Старый 24.03.2011, 20:18   #7
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

фриланс тут:
http://www.programmersforum.ru/forumdisplay.php?f=29
и капс отключи
rrrFer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужен тип переменой I1IarpeY Паскаль, Turbo Pascal, PascalABC.NET 3 24.06.2010 19:05
Создание переменой окружения в Linux Яр|/||< (^_^) Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 1 09.03.2010 21:56
Как обратиться к переменой в другом модуле. nusik Общие вопросы C/C++ 5 02.07.2009 14:56
WebBrowser (Как загрузить код из переменой) jocry Помощь студентам 4 06.01.2009 14:28
Форум общей тематики Fainder О форуме и сайтах клуба 0 31.07.2008 10:47