/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Malloc/Free i Tråde
Fra : Joe


Dato : 06-06-10 21:32

Hvis man har to tråde A og B og A er igang med at frigøre hukommelse, men
afbrydes af B, kan man så være sikker på
at frigørelsen af hukommelse forløber som forventet, når A igen får
processortid?

Hvis ikke, hvordan sikrer man sig så at det går godt?

Tak på forhånd.


 
 
Michael Rasmussen (06-06-2010)
Kommentar
Fra : Michael Rasmussen


Dato : 06-06-10 22:09

On Sun, 6 Jun 2010 22:32:00 +0200
"Joe" <Joe@NoSpammers.Com> wrote:

> Hvis man har to tråde A og B og A er igang med at frigøre hukommelse, men afbrydes af B, kan man så være sikker på
> at frigørelsen af hukommelse forløber som forventet, når A igen får processortid?
>
mig bekendt er malloc/free atomiske instruktioner.

--
Hilsen/Regards
Michael Rasmussen
http://pgp.mit.edu:11371/pks/lookup?op=get&search=0xE3E80917
A computer is like air conditioning: it becomes useless when you open
windows.


Joe (06-06-2010)
Kommentar
Fra : Joe


Dato : 06-06-10 22:42

>mig bekendt er malloc/free atomiske instruktioner.

Kan du uddybe dit svar?



Bertel Lund Hansen (06-06-2010)
Kommentar
Fra : Bertel Lund Hansen


Dato : 06-06-10 23:08

Joe skrev:

> >mig bekendt er malloc/free atomiske instruktioner.

> Kan du uddybe dit svar?

Atomiske instruktioner kan ikke blive afbrudt når først de er
gået i gang.

"Atom" betyder "udelelig".

--
Bertel
http://bertel.lundhansen.dk/         FIDUSO: http://fiduso.dk/

Arne Vajhøj (07-06-2010)
Kommentar
Fra : Arne Vajhøj


Dato : 07-06-10 02:39

On 06-06-2010 18:08, Bertel Lund Hansen wrote:
> Joe skrev:
>>> mig bekendt er malloc/free atomiske instruktioner.
>
>> Kan du uddybe dit svar?
>
> Atomiske instruktioner kan ikke blive afbrudt når først de er
> gået i gang.

Jeg tror at han tænkte på en output-only-fokus betydning
af "atomsisk instruktioner" - jeg tror ihvertfald ikke at
der er nogen implementationer på traditionelle multitasking
preemptive OS som garanterer mod at en anden tråd/process får
CPU'ens mens en af de funktioner udføres.

Arne




Arne Vajhøj (06-06-2010)
Kommentar
Fra : Arne Vajhøj


Dato : 06-06-10 22:49

On 06-06-2010 16:32, Joe wrote:
> Hvis man har to tråde A og B og A er igang med at frigøre hukommelse,
> men afbrydes af B, kan man så være sikker på
> at frigørelsen af hukommelse forløber som forventet, når A igen får
> processortid?

Nej og ja.

Nej, fordi C standarden indeholder intet om tråde d.v.s.
at der er ikke nogen garanti for at den er threadsafe, hvilket
betyder at det er implementation specifik hvorvidt den er thread
safe eller ej.

Ja, fordi med stor sandsynlighed har din platform og compiler
en implementation som er threadsafe - enten som default eller som
option.

> Hvis ikke, hvordan sikrer man sig så at det går godt?

Principielt kunen du selv synkronisere, men sandsynligheden for
at du render ind i en platform, som ikke tilbyder thread safe
malloc/free men som tilbyder både tråde og synkronisering er
meget lille.

Arne

Arne Vajhøj (06-06-2010)
Kommentar
Fra : Arne Vajhøj


Dato : 06-06-10 22:51

On 06-06-2010 17:49, Arne Vajhøj wrote:
> On 06-06-2010 16:32, Joe wrote:
>> Hvis man har to tråde A og B og A er igang med at frigøre hukommelse,
>> men afbrydes af B, kan man så være sikker på
>> at frigørelsen af hukommelse forløber som forventet, når A igen får
>> processortid?
>
> Nej og ja.
>
> Nej, fordi C standarden indeholder intet om tråde d.v.s.
> at der er ikke nogen garanti for at den er threadsafe, hvilket
> betyder at det er implementation specifik hvorvidt den er thread
> safe eller ej.
>
> Ja, fordi med stor sandsynlighed har din platform og compiler
> en implementation som er threadsafe - enten som default eller som
> option.
>
>> Hvis ikke, hvordan sikrer man sig så at det går godt?
>
> Principielt kunen du selv synkronisere, men sandsynligheden for
> at du render ind i en platform, som ikke tilbyder thread safe
> malloc/free men som tilbyder både tråde og synkronisering er
> meget lille.

http://stackoverflow.com/questions/855763/malloc-thread-safe
http://groups.google.com/group/comp.lang.c.moderated/browse_thread/thread/2431a99b9bdcef11/ea800579e40f7fa4

Er eksempler på at der er andre med den fortolkning.

Arne

Joe (06-06-2010)
Kommentar
Fra : Joe


Dato : 06-06-10 22:52
Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste