|
65 / 37 / 3
Регистрация: 30.11.2011
Сообщений: 109
|
||||||
Выборка данных из общей памяти07.11.2013, 19:56. Показов 1125. Ответов 13
Метки нет (Все метки)
пишу пул процессов для сервера,пул располагается в общем сегменте памяти,с которым все процессы и будут работать,для теста просто пробую добавить один процесс в пул и затем вывести его pid,но именно в момент, когда я пытаюсь это сделать - происходит сегментэйшен фолт(после 129 строки в коде) :
0
|
||||||
| 07.11.2013, 19:56 | |
|
Ответы с готовыми решениями:
13
Уменьшение общей памяти |
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 07.11.2013, 20:26 | |
|
shmget()+shmat() после fork() не нужен, ребенок и так унаследовал это от родителя, а в таком виде shmat() мапит память в другое место, и соотвественно родитель и другие дети получают указатели в никуда. Т.е. либо делаете shmat() один раз в родителе, либо используете в своих структурах не указатели, а смещения.
ЗЫ: еще можно man queue ЗЗЫ: а зачем вообще хранить пиды?
1
|
|
|
65 / 37 / 3
Регистрация: 30.11.2011
Сообщений: 109
|
|||||||||||||
| 07.11.2013, 20:32 [ТС] | |||||||||||||
|
g_u_e_s_t,
большое вам спасибо,помогло
0
|
|||||||||||||
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
||
| 07.11.2013, 20:36 | ||
|
0
|
||
|
65 / 37 / 3
Регистрация: 30.11.2011
Сообщений: 109
|
|
| 07.11.2013, 20:37 [ТС] | |
|
g_u_e_s_t,
0
|
|
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 07.11.2013, 20:38 | |
|
А в чем идея пула? Чем это должно отличаться от традиционного pre-fork?
0
|
|
|
65 / 37 / 3
Регистрация: 30.11.2011
Сообщений: 109
|
|
| 07.11.2013, 20:42 [ТС] | |
|
g_u_e_s_t, пул - это ,вроде, и есть названное вами понятие
Добавлено через 1 минуту в моём случае процессы после выполнения задачи будут не уничтожаться,а возвращаться обратно в очередь свободных процессов
0
|
|
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 07.11.2013, 20:46 | |
|
А зачем тогда вообще очередь то? Я не против конечно, но просто любопытно
0
|
|
|
65 / 37 / 3
Регистрация: 30.11.2011
Сообщений: 109
|
|
| 07.11.2013, 20:56 [ТС] | |
|
g_u_e_s_t, ну вот нафоркаю я процессов,с каждым из них будет связан семафор,очередь будет собственно их и содержать,когда главный процесс будет принимать запрос от клиента,он отдаст задачу процессу из очереди,просто сделав sem_post семафору из очереди,в этот момент этот семафор из очереди убирается,чтобы после выполнения процесса добавить его в конец очереди,то есть такая круговая работа получится,вместо очереди можно и кольцевой список взять,да что угодно) ну я себе просто реализацию задачи таким образом представляю,если вы знаете более логичный вариант,то прошу его озвучить
0
|
|
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
||
| 07.11.2013, 21:14 | ||
А так только абстрактно рассуждать можно. Например родитель может складывать запросы в очередь, а дети ее разгребают (писатель->читатели). Или пусть дети сами принимают запросы - т.е. вообще никаких очередей и shm если конечно не подрозумеваются какие-то общие данные.
1
|
||
|
65 / 37 / 3
Регистрация: 30.11.2011
Сообщений: 109
|
||||||
| 07.11.2013, 21:45 [ТС] | ||||||
|
g_u_e_s_t, хотел сделать такого плана http://www.osp.ru/pcworld/2008/11/5685083/
Добавлено через 15 минут g_u_e_s_t, а как задачу в очередь добавить? ну вот делаю я в главном процессе
0
|
||||||
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 07.11.2013, 21:57 | |
|
На цели озвученные по ссылке по-моему хорошо годиться POSIX или SYSV очереди сообщений.
Но... В сосдней теме ссылка на github где среди прочего, рядом лежит код из этого топика для тех целей проще всего отдать accept() на откуп детям т.е. обойтись вообще без shm, плясок с передачей дескриптора ребенку и прочего, семафор тоже не понадобиться если listen() сокет будет один.Добавлено через 4 минуты Написал, потом увидел Вашу добавку. У Вас как я понял не "очередь заданий", а список свободных процессов. Т.е. берете процесс из этого списка, помечаете его как занятый, отдаете ему дескриптор полученный от accept() через sendmsg()
1
|
|
|
65 / 37 / 3
Регистрация: 30.11.2011
Сообщений: 109
|
||||||
| 07.11.2013, 22:11 [ТС] | ||||||
|
g_u_e_s_t, спасибо,но я не совсем пойму,как мне процессу определённому передать дескриптор через sendmsg,если можно - приведите короткий пример,я тут ещё обнаружил такою "фичу",если её можно так назвать
этот цикл то ли выполняется только 1 раз,то ли не знаю,в общем сообщение child created только 1 раз выводится :
0
|
||||||
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 07.11.2013, 22:18 | |
|
greenEYE, погуглите "unix fd passing"
в приведенном кусочке проблем кроме буквы q в конце 14строки не вижу
1
|
|
| 07.11.2013, 22:18 | |
|
Помогаю со студенческими работами здесь
14
Механизм общей памяти Механизм общей памяти и attach к процессу Клиент-сервер на основе общей памяти с использованием семафоров
Модель распределения памяти разделами переменного размера с общей очередью, стратегия "наименее подходящий" Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|