DEV: Jak na zamek na databazi?

Jirka Kosina jikos na jikos.cz
Středa Březen 26 18:18:15 CET 2003


On Wed, 26 Mar 2003, Miroslav Prymek wrote:

> PROBLEM: Chtel bych, aby zaroven mohlo libovolne mnozstvi threadu cist
> z databaze. Jestlize chce nektery thread zapisovat, zakaze dalsi cteni,
> pocka az soucasne cteni dobehne a potom zacne psat.
> TEDY CELKEM KLASICKA SITUACE.

Zajimaji Vas funkce

pthread_rwlock_init()
pthread_rwlock_rdlock()
pthread_rwlock_wrlock()
pthread_rwlock_unlock()

a dalsi.

Read/write zamky jsou presne ten typ synchronizacniho primitiva, ktere
vyzadujete.
Read/write zamky se ovsem daji krasne simulovat take pomoci semaforu - na
zacatku nastavite semafor na nejakou vysokou hodnotu (vetsi, nez bude kdy
pocoiet "ctenaru"), kazdy ctenar udela na tom semaforu down() o jednicku,
zapisovatel udela na tom semaforu down(maximalni_hodnota) - tedy
zapisovatel se do kriticke sekce dostane az kdyz tam neni zadny ctenar,
ctenaru tam muze libovolne mnoho, pokud tam neni zapisovatel (prave
jeden).

--
JiKos.


Další informace o konferenci Linux