Как я могу эффективно поделиться высокочастотными данными клещей между двумя локальными процессами C ++ с использованиемC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу эффективно поделиться высокочастотными данными клещей между двумя локальными процессами C ++ с использованием

Сообщение Anonymous »

Я строю высокопроизводительный симулятор тика в C ++, который генерирует рыночные клещи (до 65 536 в секунду). Теперь я хочу отправить эти тики в другой локальный процесс на той же машине Linux в режиме реального времени. Для этого я попытался использовать общую память POSIX (SHM_OPEN, MMAP и т. Д.), Но я сталкиваюсь с проблемами производительности - потребитель не может прочитать значения клещей достаточно быстро, а иногда, кажется, упускает их вообще.int shm_fd = shm_open(SHM_NAME, O_CREAT | O_RDWR, 0666);
ftruncate(shm_fd, SHM_SIZE);
shared_data = (SharedData*) mmap(0, SHM_SIZE, PROT_WRITE, MAP_SHARED, shm_fd, 0);

shared_data->tick_count = 0;
shared_data->keep_running = true;

chrono::high_resolution_clock::time_point start_time;

while (shared_data->keep_running && shared_data->tick_count < TOTAL_JIFFIES) {
shared_data->tick_count++;
}
< /code>
Tick Reader (процесс B): < /p>
const char* shm_name = "/tick_shm";
int fd = shm_open(shm_name, O_RDONLY, 0666);
if (fd < 0) {
cerr

Подробнее здесь: https://stackoverflow.com/questions/796 ... al-c-proce
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»