Предложения по оптимизации реализации очереди блокировки - PullRequest
0 голосов
/ 29 октября 2010
T BlockingQueue<T>::pop( ) { 
       pthread_mutex_lock(&lock);
       if (list.empty( )) { 
           pthread_cond_wait(&cond) ;
       }
       T temp = list.front( );
       list.pop_front( );
       pthread_mutex_unlock(&lock);
       return temp;
}

Выше приведена операция pop, определенная для шаблонной очереди одновременной блокировки, основанной на базовом связанном списке и pthreads. Мой вопрос: каким образом мы могли бы оптимизировать этот код дальше?

Ответы [ 2 ]

2 голосов
/ 29 октября 2010

Параллельная обработка выглядит довольно минимально.Ваш основной контейнер - лучший кандидат на перфюнинг.Это действительно связанный список?deque было бы лучше, если бы вы выполняли только операции FIFO.

РЕДАКТИРОВАТЬ: см. Также пример кода Энтони Уильямса (который написал текущий Boost.Thread) здесь , для советов и подробного обсуждения.

0 голосов
/ 29 октября 2010

В вашем текущем решении, какую конкретную проблему вы пытаетесь решить путем дальнейшей оптимизации?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...