![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Gwendolen |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 5.4.2005 Репутация: нет Всего: 1 |
Проектирую структуру кросплатформенного (Windows и Linux) многопоточного приложения.
С программированием под Linux знаком мало (работал только с QT под обоими платформами). Собственно задача: Необходимо посылать сообщения из функций, находящихся в динамических библиотеках (поток для них создает исполняемый файл). Если бы писал только под Windows то было бы оптимально PostThreadMessage или Post/SendMessage и цикл обработки сообщений потока/окна. Пока только приходит в голову callback функция в исполняемом файле, которая помещает данные сообщения в потокобезопасный контейнер и генерирует собщение, что его в контейнере есть данные. Так как она находится в исполняемом файле то смело можно использовать сообщения QT, на котором я планирую создавать интерфейс. P.S. Желательно также, чтобы метод позволял разрабатывать динамические библиотеки не только на С. --------------------
Наносите пользу и причиняйте добро! |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
Qt вполне позволяет соединять сигналы со слотами из других потоков:
|
|||
|
||||
Gwendolen |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 5.4.2005 Репутация: нет Всего: 1 |
Отлично это знаю, а если динамическая библиотека разрабатывается на другом языке (например Delphi). Так как библиотеки планируется применять как модули расширения - плугины. Надо чтото более универсальное, хотябы с использованием стандартной библиотеки С++. --------------------
Наносите пользу и причиняйте добро! |
|||
|
||||
Alek86 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
удалено
Это сообщение отредактировал(а) Alek86 - 13.8.2008, 10:11 |
|||
|
||||
Cycle |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 1.12.2007 Репутация: 3 Всего: 3 |
Универсальное? А что есть и в Линуксе и Виндовс?
Например socks. Правда при работе с socks все равно придется некоторые участки кода обрамлять в #ifdef WIN32 |
|||
|
||||
Alek86 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
если длл может писаться на любом языке и под любые платформы, то подойдет только общая технология типа COM (не знаю. правда. как он реализуется под линухом) или .Net
|
|||
|
||||
Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 4 Всего: 10 |
Gwendolen, вопрос я понял плохо. Могу сказать, что во-первых, надо понять, что бинарной переносимости между win32 и linux нет, и ничто это не исправит: нужно делать разные сборки под разные платформы. Переносимости на уровне исходных кодов можно добиться за счет использования библиотек (Boost, в частности, его потоковая библиотека, Qt, wxWidgets...).
Если вы создаете распределенное приложение, часть которого выполняется на одной платформе, часть на другой, то взаимодействие между ними можно организовывать традиционными средстванми: сокеты, ICE, недавно опубликованная Google Protocol Buffers из бинарных или XML-RPC, web servicies из текстовых. COM и CORBA, если ничто извне не вынуждает их использовать, это оверкил: очень сложные, поддержка есть только для COM под Windows, в остальных сочетаниях вам придется довольно тяжко (хотя и в случае COM под win32 все тоже тяжко). Ничего особо эксклюзивного они сами по себе не представляют (имеет смысл использовать, повторю, если есть уже что-то на них написанное). Это сообщение отредактировал(а) Ulysses4j - 13.8.2008, 15:32 -------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
Gwendolen |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 5.4.2005 Репутация: нет Всего: 1 |
Бинарная переносимость не требуется, требуется максимально возможная переносимость кода. Похоже код, прийдется разделять и для потправки сообщений использовать API конкретной ОС (не обработку сообщений с помощью каких либо библиотек). --------------------
Наносите пользу и причиняйте добро! |
|||
|
||||
Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 4 Всего: 10 |
Если спользовать API конкретной ОС, переносимости кода не будет, надо использовать API какой-либо библиотеки-обертки над API ОС.
-------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
Gwendolen |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 5.4.2005 Репутация: нет Всего: 1 |
А вот это как раз не желательно. В принципе продолжение темы корректней продолжить здесь: Обработка сообщений на Linux, Нужны API функции --------------------
Наносите пользу и причиняйте добро! |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
Чё то я не врубаюсь. ![]() Похоже что автор сам еще не знает что ему нужно, или не знает нужно ли ему хоть что-то... Ну понаблюдаем... Я думаю автору статьи нужно написать абсолютно новую ОС. На которой будет API Windows, но на самом деле это Linux. Или наоборот. Это единственное решение. ![]() Это сообщение отредактировал(а) andrew_121 - 15.8.2008, 01:55 -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
WINE - и ничего писать не нужно ![]() |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
bsa, Извращение какое-то
![]() -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
есть штука - очереди гарантированной доставки. они есть и кросплатформенные (IBM чета там).
не велосипеды, и дают ряд преимещуств. почитайте книгу Шаблоны интеграции корпаративных приложений, там это описывается довольно неплохо.... -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |