Was ist der Unterschied zwischen GLOBAL und SHARED?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Was ist der Unterschied zwischen GLOBAL und SHARED?

Beitrag von AND51 »

Was ist denn der unterschied zwischen Global und Shred?

Global macht eine Variable überall verfügbar und Shared, dass man am besten nur in Proceduren verwendet, macht eine Variable einer Procedure in allen Proceduren, nicht aber im Hauptprogramm verfügbar, oder wie?
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Dafür schreibt man sich nen simplen Testcode, mit nen paar Debugs und man
weiß Gescheid :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Code: Alles auswählen

b.l = 5

Procedure Test1()
  Shared b
  Debug b
EndProcedure

Procedure Test2()
  Debug b
EndProcedure

Test1()
Test2()
Debug b
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Danke DarkDragon! Deine indirekte Antwort war irgendwie... klasse! :allright:

@ TS-Soft: Wie soll ich denn so einen Code schreiben wenn ich nicht mal ansatzweise weiß, wie SHARED funktioniert? Da müsst ich ja raten... Wa sist denn schon dabei, wenn man sowas kleines fragt?

Also, nochmal in knapper Kurzform, damitich es mit besser merken kann:
(Ausgehend von Dark Dragon's Code):

Eine Procedure verschafft sich mit Hilfe von Shared Zugriff auf eine Variable, auf die sie ohne Shared niemals Zugriff hätte, richtig?
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Genau richtig,
während Global allen Proceduren den Zugriff ermöglicht.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

AND51 hat geschrieben: @ TS-Soft: Wie soll ich denn so einen Code schreiben wenn ich nicht mal ansatzweise weiß, wie SHARED funktioniert? Da müsst ich ja raten... Wa sist denn schon dabei, wenn man sowas kleines fragt?
Ab, Anfängerforum :lol:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

@AND51

Fehlt nur noch der Vergleich zu Protected :lol: .
Aber eigendlich steht das alles ja schön in der PB-Hilfe beschrieben drinne, so das man hätte vorher gucken können :twisted:

Gruß Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
horst
Beiträge: 70
Registriert: 08.09.2004 19:33
Wohnort: München
Kontaktdaten:

Re: Was ist der Unterschied zwischen GLOBAL und SHARED?

Beitrag von horst »

AND51 hat geschrieben:.. und Shared...macht eine Variable einer Procedure in allen Proceduren, nicht aber im Hauptprogramm verfügbar
und zusätzlich im Hauptprogramm.

"To share" bedeutet soviel wie "teilhaben" oder "gemeinsam nutzen" http://dict.leo.org/ende?search=share

Mit Shared können Prozeduren eine Variable gemeinsam nutzen. Die Hauptprozedur (Hauptprogramm) ist dabei immer Teilhaber.
horst
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Mit Shared können Prozeduren eine Variable gemeinsam nutzen. Die Hauptprozedur (Hauptprogramm) ist dabei immer Teilhaber.
Das klingt irgendwie so als ob es nur für die Kommunikation zwischen Prozeduren gedacht ist, meinst du nicht? Ist es allerdings nicht nur.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

da muss ich jetzt aber mal auf die boardsuche hinweisen, da wir erst vor zwei, drei monaten über shared und global diskutiert haben...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten