2010-07-16 2 views
0

Я ищу реализацию C параллельного стека (например, Cilk THE protocol), который позволит основному потоку нажать и поп (поп-операция будет в начале стека для пример) и удаленный поток для поп (эта поп-операция будет в конце стека) с каждой предосторожностью, которую нужно принять.Многопоточная структура данных: параллельный стек

Если нет кода, любые рекомендации по внедрению будут оценены.

Thx!

+1

Если вы хотите нажать в начале и поп в конце, то это не стек, а очередь. – aggsol

+0

Вы хотите, чтобы потребитель («удаленная нить») блокировался, когда он читает, и там ничего нет? (блокировка очереди) – JBRWilkinson

+0

Кроме того, какая среда? POSIX? Win32? – JBRWilkinson

ответ

1

Я бы взял обычный стек и обернул функции push и pop с помощью мьютексов.

В-С псевдо:

void push(void *data) 
{ 
    acquire_lock(mutex); 
    stack_push(data) 
    release_lock(mutex); 
}

Добавить проверку ошибок и соль по вкусу.

+0

На самом деле я ищу бесплатную или бесплатную реализацию для приложения HPC, поэтому решение для мьютекса следует избегать (поэтому я указал протокол Cilk) – claf