![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
IgnatM |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 8.1.2011 Репутация: нет Всего: нет |
нужно написать программу, которая вычисляет значение интеграла функции 4/(1+Х^2) на интервале значений 0..1, методом трапеций, где каждый элемент суммы, вычисляется в отдельном процессе....
вот мой код, но в чем - то проблема - процессор перегружается и конечное значение интеграла выводиться несколько раз, я так понимаю промежуточные..Помогите пожалйста
|
|||
|
||||
svlary |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 8.9.2009 Репутация: 4 Всего: 4 |
||||
|
||||
IgnatM |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 8.1.2011 Репутация: нет Всего: нет |
Да, так я хотел сделать, но не уверен, что суммирование происходит в родительском.
|
|||
|
||||
svlary |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 8.9.2009 Репутация: 4 Всего: 4 |
Так делать нельзя. Просто потому, что родительский и дочерний процесс работают в разных и никак не связанных областях памяти. Дочерний процесс, в момент создания. получает КОПИЮ области памяти родительского. Но дальше их дорожки расходятся и пытаться использовать значение переменной дочернего процесса в родительском, то же самое, что использовать подсказки из загробного мира в делах житейских... ![]() |
|||
|
||||
null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 4 Всего: 12 |
IgnatM, извиняюсь за любопытство, хоть я и не любопытный, это принципиальная задача делать параллельно эти вычисления?
если приципиально, то через процессы, почитай: http://linux.die.net/man/2/shmget http://linux.die.net/man/3/sem_init через потоки отталкивайся от (pthread) http://pubs.opengroup.org/onlinepubs/00790.../pthread.h.html Это сообщение отредактировал(а) null56 - 3.5.2011, 16:36 |
|||
|
||||
IgnatM |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 8.1.2011 Репутация: нет Всего: нет |
Здесь это не принципиально, нигде использоваться это больше не будет, но все же нужно сделать((
|
|||
|
||||
null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 4 Всего: 12 |
ну если ты принципиально не хочешь использовать потоки, то придется подумать над тем, как передать данные от одного процесса другому... один способ я тебе упомянул выше, но можешь еще воспользоваться неименованными каналами
почитай man pipe то есть код изменится примерно так
я не проверял, то что набросал, если пахать не будет, почитай man pipe, снизу страницу помощи, есть пример использонвания http://www.opennet.ru/man.shtml?topic=pipe...2&russian=2 Это сообщение отредактировал(а) null56 - 3.5.2011, 18:39 |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
еще можно mmap с MAP_SHARED перед форком
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
IgnatM |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 8.1.2011 Репутация: нет Всего: нет |
Сделал с помощью pipe. Вот код:
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |