Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Программирование под Unix/Linux > обмен данными между потоками |
Автор: loginrl103 16.2.2009, 13:28 |
Задача: имеется ряд машин, с работающими программами. Все эти машины должны быть соединены между собой через сервер (роутер). На сервере для каждого соединения с машиной имеется свой поток. Проблема в следующем: потоки должны всё время обмениваться данными (те если клиент А (потокА) хочет отправить данные клиенту Б (потокБ), то потокА должен передать данные для отправки потокуБ), как можно осуществить сиё деяние? Обмен данными будет по всей видимости довольно интенсивный. Хотелось бы реализовать с использованием очередей сообщений, но как вот именно...если реально - желательно обойтись без тяжёловесных библиотек. ps. linux/pthread/C. |
Автор: MAKCim 16.2.2009, 13:55 |
обычный per-thread список, защищенный спин-блокировкой |
Автор: loginrl103 16.2.2009, 14:07 |
можно поконкретнее? код для примера? |
Автор: MAKCim 16.2.2009, 14:24 | ||
|
Автор: GrayCardinal 17.2.2009, 16:48 |
Рекомендую msgget(2). А еще лучше шаровая память shmget(2) плюс семафор(ы) semget(2). Еще можно простую трубу (pipe(2)) + select. Вариантов, как видите. немеряно. Какой наиболее интересен (объясню подробнее) ? |
Автор: GrayCardinal 17.2.2009, 17:59 |
MAKCim, Не скажи... ![]() |
Автор: MAKCim 17.2.2009, 18:16 |
более того, я не просто говорю, я утверждаю ![]() жду аргументов ![]() |
Автор: GrayCardinal 17.2.2009, 18:21 |
MAKCim, ты утверждаешь, с тебя и тесты ![]() У нас просто понятия скорости разные - вот писать на питоне, вот это действительно МЕДЛЕННО. |
Автор: MAKCim 17.2.2009, 18:28 |
я к тому, зачем использовать ядро как буфер IPC для _потоков_? ![]() знаешь сколько в ядре будет выполняться ненужных действий? (применительно к этой задаче) Добавлено через 2 минуты и 44 секунды один фиг как API вызывается |
Автор: GrayCardinal 18.2.2009, 09:51 |
MAKCim, ОК. Но труба-то тебе чем не угодила ? ![]() |
Автор: MAKCim 18.2.2009, 11:45 |
хм а что, pipe не использует буфер в ядре (как и любой другой ядерный IPC)? ![]() |
Автор: GrayCardinal 18.2.2009, 12:26 |
MAKCim, ![]() |