In mijn C applicatie heb ik reference counting toegepast om op bepaalde punten aan automatisch geheugenbeheer te doen. Bijv. een consumer/listener waarbij data wordt verzonden naar alle (interne) listereners en automatisch weer wordt opgeruimd zodra alle listeners de data hebben ontvangen en verwerkt. Ook in mijn embedded LUA modules implementatie gebruik in reference counting om te volgen wanneer mijn eigen objecten (lightuserdata) opgeruimd kunnen worden
Alles werkt naar behoren, dat is het punt niet. Echter viel me tijdens het lezen over bestaande reference counting implementaties iets op. Nergens zie ik gebruik gemaakt worden van sempahores. Ik doe dat wel, want ze lijken me daar perfect voor gemaakt.
Oftewel, maak ik een denkfout door semaphores te gebruiken en waarom? Of ben ik juist geniaal bezig om ze juist wel te gebruiken en zou iedereen dat eigenlijk moeten doen
?
Alles werkt naar behoren, dat is het punt niet. Echter viel me tijdens het lezen over bestaande reference counting implementaties iets op. Nergens zie ik gebruik gemaakt worden van sempahores. Ik doe dat wel, want ze lijken me daar perfect voor gemaakt.
C:
1
2
3
| void ref(struct foo *bar) { sem_post(bar->ref) } |
C:
1
2
3
4
5
6
| void unref(struct foo *bar) { int x = sem_trywait(bar->ref); if(x == -1 && errno == EAGAIN) { bar->free(bar); } } |
Oftewel, maak ik een denkfout door semaphores te gebruiken en waarom? Of ben ik juist geniaal bezig om ze juist wel te gebruiken en zou iedereen dat eigenlijk moeten doen
Sinds de 2 dagen regel reageer ik hier niet meer