fpc linux и мультипроцессность.

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

fpc linux и мультипроцессность.

Сообщение [DD] » 13.11.2010 13:10:24

Недавно решил взяться за разработку многопроцессного приложения. С самими процессами более или менее разобрался.
Начал появляться вопрос про передачу данных между процессами. Почитав литературу нашел подходящий для меня способ. Этим способом оказалась очередь сообщений. скопипастил пример из статьи откомпилировался он даже с первой попытки, но вот загвоздка сообщения не отправляются и соответственно не читаются... взял пример из пакета fpc-build(использую Gentoo так что там исходники) откомпилировал, запускаю и вижу что отправка опять не проходит. Возвращался код ошибки 14 - ESysEFAULT - неверный адрес.

Собственно вопрос. В чем тут может быть ошибка: в настройке системы или параметрах компиляции или может еще в чем-то?
[DD]
незнакомец
 
Сообщения: 2
Зарегистрирован: 13.11.2010 12:48:09

Re: fpc linux и мультипроцессность.

Сообщение pda » 13.11.2010 18:37:22

Не пользуйтесь ими. Они давно устарели и присутствуют лишь для совместимости с какими-то очень старыми программами. Современным программам для межпроцессного обмена рекомендуется использовать сокеты (в том числе и локальные, если обмен ограничен одной машиной), отоброжаемую память (man mmap2). Если обмена много, можно посмотреть на современные библиотеки, например ZeroMQ. Так же стоит обратиться к книге "Искусство программирования UNIX" Эрика Реймонда, там вопросы актуальных средств и интерфейсов освещаются.

The upper, message-passing layer of System V IPC has largely fallen out of use. The lower layer, which consists of shared memory and semaphores, still has significant applications under circumstances in which one needs to do mutual-exclusion locking and some global data sharing among processes running on the same machine. These System V shared memory facilities evolved into the POSIX shared-memory API, supported under Linux, the BSDs, MacOS X and Windows, but not classic MacOS.

http://www.faqs.org/docs/artu/ch07s02.html#id2922148

The System V IPC facilities are present in Linux and other modern Unixes. However, as they are a legacy feature, they are not exercised very often. The Linux version is still known to have bugs as of mid-2003. Nobody seems to care enough to fix them.

http://www.faqs.org/docs/artu/ch07s03.html#id2923376
Аватара пользователя
pda
постоялец
 
Сообщения: 303
Зарегистрирован: 27.05.2005 19:59:53

Re: fpc linux и мультипроцессность.

Сообщение [DD] » 19.11.2010 09:03:10

Спасибо за совет... Однако мне нужны были именно очереди сообщений...
PS если вдруг появится еще такой же упертый как и я - то пусть знает что эта проблема возникает на 64-битных системах и связана она с тем, что тип long имеет размер в 8 байт а longint(который используется во всех примерах для fpc) 4байта таким образом получаем, что в записи TMsgBuf поле mtype должно иметь тип int64.
[DD]
незнакомец
 
Сообщения: 2
Зарегистрирован: 13.11.2010 12:48:09


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

Рейтинг@Mail.ru