← Back to team overview

sslug-teknik team mailing list archive

Re: C++, STL og threads

 

Anders Johansen wrote:

...

> Det vides at Rouge Wave STL i den version der er inkluderet i Borland
> C++ Builder 4.0 er trådsikkert, men det er jo en Windows-ting, og dermed
> ikke portabelt :( Desuden er det jo nok bundet til C++B's trådmodel
> (Win32), så det...
> 
> Infosøgning på tråde peger på, at der er utallige implementationer af
> det. User-mode tråde vil nok virke, da det helt sikkert har adgang til
> hovedprogrammets lager. Om kernetråde gør, afhænger af de forskellige OS
> implementationer. JEg har en grim fornemmelse af, at nogen af dem i
> virkeligheden er forklædte fork() ting. 

Mit gæt er at disse biblioteker til Gnu C++ slet ikke bruger tråde,
hvorfor skulle de det ?
Ellers må du hente kildeteksten til STL og checke om de laver 
noget "tråde". Men i så fald bliver implementationen af C++/STL jo 
pludselig meget OS specifikt, så det lyder ikke sandsynligt.


> Konklusion:
> I UNIX-verden bliver dísse to ting åbenbart ikke diskuteret samtidigt.
> Formegentlig fordi der er så pokkers mange måder at lave tråde på, og
> man derfor har valgt at se lidt bort fra det. Det gør mig selvfølgelig
> lidt utryg, selvom det fremgår af "STL programming manual and reference"
> at hver STL-container håndterer allokering og deallokering selv.

Men hvorfor blande tråde ind i dette?
Forhåbetlig er STL kald (ofte "C++ makroer/templates") jo lavet
rent "sekventielt".

> For mit projekt betyder det, at jeg må vælge en metode hvor STL-adgang
> kun sker i hovedprogrammet. Det er heldigvis muligt, da jeg er på et
> tidligt tidspunkt i udviklingen.

Har du prøvet hvad der sker hvis der anvendes lokalt ?
Hvis du allokerer og deallokere inden tråden slutter, så skulle
det i teorien også virke (forudsat der ikke sker andre sjove ting
med tråde i STL)


> Morale:
> Undersøg tingene *før* du antager det kan lade sig gøre. Eller som
> akedemikere siger: "Måneder i laboratoriet kan spare dig for timer på
> biblioteket" :D

Det nemmeste er jo at se i kildetekst til STL :)
(evt. grep mv. efter relevante kald)

-- 
mvh Frank Damgaard  frda@xxxxxxxxxxxxx | frank@xxxxxxxx |fido  2:236/15.2


References