Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: sandman_7920 в Jan 14, 2009, 14:42



Титла: Parallel Programing
Публикувано от: sandman_7920 в Jan 14, 2009, 14:42
Имам въпрос който се отнася за thread.

Примера е следния

struct SharedData{
     char *buf;
     .........
     .........
} SData;

thread1-->write споделената памет
thread2-->read споделената памет

В този случай трябва ли да ползвам pthread_mutex_lock|pthread_mutex_unlock и ако да, достатъчно ли е да се ползва само в thread1


Титла: Re: Parallel Programing
Публикувано от: Emooo в Jan 14, 2009, 15:05
http://en.wikipedia.org/wiki/Readers-writers_problem

Накратко отговора на 2та въпроса е ДА


Титла: Re: Parallel Programing
Публикувано от: sandman_7920 в Jan 14, 2009, 15:08
Благодарско.


Титла: Re: Parallel Programing
Публикувано от: task_struct в Jan 14, 2009, 15:15
Мисля, че трябва да ги ползваш и в двете нишки. Защото ако се превключат нишките докато примерно thread1 пише и е написала само част от данните, то thread2 ще прочете само донякъде ъпдейтвани данни. Както и обратното thread2 да прочете стари дани, thread1 да ъпдейтне данните и thread2 да допрочете новите данни.


Титла: Re: Parallel Programing
Публикувано от: Emooo в Jan 14, 2009, 16:14
Изках да кажа че трябва да локваш във всеки треад по всяко време, навсякъде