Articles of многопоточными

Почему мой сервер UDS не будет принимать соединения?

Я пишу небольшой сервер UDS для назначения, и чувствую, что мой код в основном есть, но я не получаю абсолютно никаких результатов, когда на самом деле пытаюсь запустить его. Код проверяется сценарием оболочки, который отправляет несколько различных тестовых вызовов на главную функцию моего кода. Единственное, что передается на главную, – это имя файла log и […]

Не удалось получить данные после подключения, получив ошибку Bad Descriptor

Я работаю над многопоточным серверным приложением на C с использованием Pthreads (Linux). Моя система – двойная boot.Windows 7, а также Ubuntu. Я перезапустил свой компьютер и загрузился в Windows из Ubuntu. Перед перезагрузкой моего серверного приложения работало Fine. После того, как я снова загрузился в ubuntu из окон. и начал мой сервер, я начал получать […]

Измерение эффективности ожидания Mutex и Busy

Программа предназначена для создания нескольких streamов, где каждый stream увеличивает общую переменную на 10000, используя цикл for, который увеличивает его на 1 на каждой итерации. Требуются как блокировка блокировки мьютекса, так и блокировка блокировки (ожидание). Согласно тому, что я узнал, версия для мьютексов должна работать быстрее, чем прямая блокировка. Но то, что я реализовал, дало […]

Спящий рабочий stream на файловом сервере

Я реализую файловый сервер и получает запросы от нескольких клиентов. Каждый клиент отправляет несколько запросов. На конце сервера основной stream генерирует новый рабочий stream для обработки запросов каждый раз, когда подключается новый клиент. Один рабочий stream обрабатывает все запросы от клиента, для которого он был создан. Таким образом, после того, как stream обрабатывает запросы, он […]

Когда безопасно уничтожить барьер pthread?

Если у меня есть инициализированный pthread_barrier_t, когда безопасно его уничтожить? Безопасен ли следующий пример? pthread_barrier_t barrier; … int rc = pthread_barrier_wait(b); if (rc != PTHREAD_BARRIER_SERIAL_THREAD && rc != 0){ perror(“pthread_barrier_wait”); exit(1); } if (id == 0){ if(pthread_barrier_destroy(&(threads[t_root].info.tmp_barrier))){ perror(“pthread_barrier_destroy”); exit(1); } }

Поиск библиотеки C или C ++, обеспечивающей функциональность, похожую на каналы Google Go

… для использования на многопоточном сетевом сервере. Я хочу передавать данные между несколькими streamами. В настоящее время я использую сокеты с блокировкой главного streamа на select () и блокировкой рабочих элементов на recv (), хотя я считаю, что, вероятно, существуют более продвинутые или предварительно упакованные способы обработки этой задачи на C ++.

Unix pthreads и сигналы: для обработчиков сигналов streamа

У меня возникли проблемы с получением streamов, чтобы поймать правильные сигналы. Например, Сначала я начинаю основной stream (tid 1). Затем он устанавливает обработчик сигнала для SIGUSR1 в SIGUSR1 (), используя signal(2) . Основной stream создает новый stream, с tid 2. В streamе 2 я регистрирую обработчик сигнала для SIGUSR1 для SIGUSR1 function2() используя signal(2) . […]

Является ли epoll поточно-безопасным?

В epoll есть две функции: epoll_ctl epoll_wait Являются ли они streamобезопасными, когда я использую тот же epoll_fd? Что произойдет, если один stream вызовет epoll_wait, а другие вызовет epoll_ctl в одно и то же время?

Работа с асинхронными сигналами в многопоточной программе

В книге интерфейса программирования Linux упоминался метод работы с асинхронными сигналами в многопоточной программе: Все streamи блокируют все асинхронные сигналы, которые может получить этот процесс. Самый простой способ сделать это – заблокировать сигналы в основном streamе до создания любого другого streamа. Каждый впоследствии созданный stream наследует копию сигнальной маски основного streamа. создайте отдельный выделенный stream, […]