Avatar billede krismort Nybegynder
27. august 2002 - 17:53 Der er 2 kommentarer og
2 løsninger

code generation?

Hvis man i vc++ går ind under setting for et projekt og trykker på c++ tab'en og vælger katagorien code generation så finder man en listboks med nogen muligheder kaldet Use runtime libery.
-
Hvad betyder de forskellige muligheder og hvad bruges de til ?

single-threaded *
multithreaded
multithreaded DLL
debug single-threaded
debug multithreaded
debug multithreaded DLL

Kristian
Avatar billede jpk Nybegynder
28. august 2002 - 08:24 #1
Det er faktisk lige ud af landevejen:

single-threaded: komponenter er ikke nødvendigvis threadsafe
multithreaded:  threadsafe
DLL:            der linkes statisk med MSVCRT.LIB
debug:          der anvendes debug version af MSVCRT
Avatar billede soepro Nybegynder
28. august 2002 - 08:29 #2
Use Runtime Library (RTL) - Det betyder om dit program må anvende DLL'er med den faktisk kode til de standard funktioner du har anvendt i dit program eller ej. Hvis man siger ja til dette, bliver programmets .exe fil mindre, men tilgengæld skal du så også give dem der skal bruge programmet de DLL'er som hører til RTL'et.

Normalt fungere det sådan at hvis du siger NEJ, så bliver standard koden linket med ind i dit program, dvs. din .exe fil bliver større, men du kan så også nøjes med kun at give denne ene fil, til dem der skal bruge programmet.

Forskellen på ovenstående RTL'er, er et spørgsmål om hvordan standard-funktionerne er konstrueret, og dermed hvilken type program der kan ancende dem.
Avatar billede soepro Nybegynder
28. august 2002 - 08:37 #3
Som jpk skriver (han kom indenom !), er single threaded RTL'en opbygget sådan at de enkelte standard funktioner IKKE kan køre samtidigt, f.eks. fordi to at funktionerne deler de samme interne variabler. Forestil dig f.eks. StrToInt og IntToStr funktionerne som er to sider af samme sag. Disse kunne man i en single-thread version implementere vha. fælles lokale variabler - f.eks. en string og en int. (myString, myInt) Hvis dit program ikke kører trådet, kan du heller ikke komme til at køre de to funktioner samtidigt - og så er implementeringen jo OK. MEN ... hvis nu dit program har to tråde, der anvender hver sin funktion på samme tid (og det vil de fkatisk godt kunne, selvom din PC'er kun har en CPU, fordi Window så deler tiden mellem de to tråde helt vilkårligt) så giver det jo en frygtelig masse ged.

At lave en funktion ThreadSafe kræver ofte nogle ekstra krumspring, og kræver derfor ekstra CPU-tid. Hvis man derfor ikke har brug for trådning, kan man få sit program til at køre hurtigere ved at vælge det rette RTL-version. (I de fleste programmer du og jeg laver, gør det sikkert ingen eller kun lille forskel, men i applikationer som f.eks. arbejder i realtid, eller behandler meget store mængder data -og dermed anvendes standard funktionen fra RTL'en ofte- kan det gøre en stor forskel.
Avatar billede soepro Nybegynder
28. august 2002 - 08:38 #4
(Og så ville jeg ønske der var en stavekontrol på eksperten, for hold da k... hvor der var mange "tyrkfjel" i det svar.)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester