Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C++] pthread condition object wait() lijkt niet te werken?

Pagina: 1
Acties:

  • basisdeman
  • Registratie: Januari 2014
  • Laatst online: 21-10-2021
Hallo allemaal,

ik ben bezig een stukje code aan te passen waarbij twee verschillende threads hetzelfde object aan spreken. Dit gebeurt op de volgende wijze:
- Er is een soort van setup waarin een nieuwe pthread wordt aangemaakt. Deze voert een 'periodieke' loop uit met verschillende bewerkingen voor elke 1 seconden, 5 seconden, 10 seconden en 5 minuten. Bij de bewerkingen die iedere seconden moeten plaatsvinden, spreekt de thread een object aan om van dat object een bepaalde methode aan te roepen.
- Elders in de code wordt vervolgens in de 'main' een infinite loop aangemaakt welke gebruik maat van een boolean om uiteindelijk uit de loop te geraken (while(!true)). In deze loop wordt ook hetzelfde object aangesproken als dat de pthread doet.
De methoden die worden aangesproken op het object leveren output, waarmee ik een duidelijk inzicht kan krijgen wie nu het object aanspreekt.
Ik heb vervolgens het object afgeschermd met een mutex en daarna met een condition object. Echter lijkt het condition object niet te werken, daar de andere thread gewoon toegang schijnt te krijgen tot het object!!!

Om een lang verhaal kort te maken en om een opsomming van mijn vraag te maken, is het mogelijk dat pthread methodieken zoals condition object en mutex alleen maar werken met pthreads (welke dus geinstantieerd zijn met pthread_create())??????

Alvast bedankt voor de reacties, en als mijn probleem niet helemaal duidelijk is wil ik graag toelichten :)

  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

Je verhaal is een beetje wazig en ik zou je willen aanraden een kleine testcase te bouwen en die met ons te delen. Ik denk dat je de functionaliteit van een mutex / conditional variable niet helemaal doorziet, maar het is moeilijk daar met dit verhaal wat over te zeggen:

Een mutex gebruik je om 1 thread tegelijk toegang tot een bepaald stuk code te geven. Een conditional variable om threads te suspenden tot een bepaalde conditie bereikt is.