The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Синхронизация 2 потоков"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (C/C++)
Изначальное сообщение [ Отслеживать ]

"Синхронизация 2 потоков"  +/
Сообщение от d1987 (ok) on 30-Авг-10, 19:47 
Помогите пожалуйста разобраться.

Пытаюсь увеличить производительность программы.
Есть 2 потока, оба работают с одним объектом, код не сильно сложный - получить объект или вернуть объект. Синхронизация выполнена на mutex. Приложение написано на С и работает на железке c PowerPC e500v2 под Linux. И важно, чтобы оно работало как можно быстрее.

Хотелось бы спросить у знающих людей, так как вроде мьютексы довольно тяжежеловесны, возможно ли увеличить производительность за счёт использования другого механизма синхронизации, сейчас планирую почитать про них, но времени не так много - spinlock, semaphore, condition variable, RCU (liburcu) или использовании неких других примитивов - видел в каком-то коде функцию __sync_fetch_and_add для синхронизации и что-то ещё наверняка есть. Просто я под Linux не писал ничего, только планирую изучать данную платформу, но на работе есть апликация одна и сейчас её решили улучшить.  

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "атомарные синхронизации"  +/
Сообщение от Вова on 31-Авг-10, 10:23 
Если критическая секция кода, оборачиваемая мутексом, действительно несложна, то есть  пара инкрементов/присвоение указателей/итп, то использование __sync* функций http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html будет оптимальным.  В теории, в такой ситуации подойдёт спинлок, но фактически выигрышей от спинлока не наблюдается даже сравнительно с обычным локом на pthread_mutex, видимо, дело в том, что busy-wait слишком дорог. Условные переменные и семафоры ещё более тяжелы, чем просто мутексы, у них специфическая область применения.  Упомянутые "luburcu RCU" - не использовал, ничего сказать не смогу.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "атомарные синхронизации"  +/
Сообщение от d1987 (ok) on 31-Авг-10, 10:39 
Спасибо за столь развёрнутый ответ!


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру