Avatar billede krismort Nybegynder
01. november 2005 - 09:48 Der er 6 kommentarer og
1 løsning

GUID algoritme / snippet i c++

Er der en som har en cross-platform snippet liggende til at udregne et GUID i c++ ?
Avatar billede arne_v Ekspert
01. november 2005 - 09:56 #1
GUID a la Windows GUID kan næppe laves cross-platform - der er simpelthen ikke
funktioner i ANSI C til at hente tid i millisekunder, ethernetkort adresse,
serienumre og hvad ellers man bruger.

Hvis du kan tillade dig at bruge en database (i bred forstand) så er den normale
måde Amblers High-Low approach.
Avatar billede krismort Nybegynder
01. november 2005 - 10:48 #2
Jeg skal bare lave et ID generator til et simpelt dbms så der lyder Amblers High/Low som noget der er velegnet. Har du nogen referancer til den på nettet ?
Avatar billede arne_v Ekspert
01. november 2005 - 10:51 #3
Avatar billede arne_v Ekspert
01. november 2005 - 10:54 #4
princippet er meget simpelt

oid = high * k + low

hver instans af generatoren laver en:

high = værdi fra database
værdi fra database + 1

(atomisk !!!!)

og genererer så k oid'er ved at lade low gå fra 0 til k-1

pointen er at det gør ikke noget at det er dyrt at lave den database
operation da det kun skal laves 1 gang per k oid'er
Avatar billede arne_v Ekspert
01. november 2005 - 10:55 #5
om oid skal være 32 bit integer eller 64 bit integer eller en varchar er op
til implementationen
Avatar billede Slettet bruger
05. november 2005 - 06:46 #6
Mulig inspiration selv om det er java, men metoden er cross-platform
http://www.javaexchange.com/aboutRandomGUID.html
Avatar billede arne_v Ekspert
31. december 2005 - 15:15 #7
All set ?
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