[CONTEST] - Algoritmo di Peterson

« Older   Newer »
  Share  
Semaphore
CAT_IMG Posted on 26/1/2011, 15:50     +1   -1




Sfido chiunque di voi ad applicare l'algoritmo di Peterson in uno script in Autoit!
Chi vuole sapere di più sull'algoritmo di Peterson può consultare Wikipedia!
Il contest scade il 26/02/2011 (avete un mese di tempo)
 
Top
CAT_IMG Posted on 26/1/2011, 17:18     +1   -1
Avatar

So creare belle gui

Group:
Member
Posts:
374
Reputazione:
0
Location:
C:\Windows\System32 \hacktooth.exe

Status:


lo vuoi fatto per due processi o per n processi?
 
Top
/dev/random
CAT_IMG Posted on 26/1/2011, 17:37     +1   -1




AutoIT non è multithread se non sbaglio, però si potrebbe applicare su due programmi separati che invece di condividere le variabili leggono un file...

Comunque questo lo lascio a voi AutoITtiani... Io resto dal mio amico Python xD
 
Top
CAT_IMG Posted on 26/1/2011, 18:40     +1   -1
Avatar

So creare belle gui

Group:
Member
Posts:
374
Reputazione:
0
Location:
C:\Windows\System32 \hacktooth.exe

Status:


Ecco il codice
SPOILER (click to view)
CODICE
#NoTrayIcon
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$in1 = ""
$in2 = ""
$last = ""

$Form1 = GUICreate("Algoritmo di Peterson", 318, 98, 192, 124)
$Button1 = GUICtrlCreateButton("Processo #1", 16, 24, 121, 49)
$Button2 = GUICtrlCreateButton("Processo #2", 176, 24, 121, 49)
GUISetState(@SW_SHOW, $Form1)

While 1
       $nMsg = GUIGetMsg()
       Switch $nMsg
               Case $GUI_EVENT_CLOSE
                       Exit
               Case $Button1
                       Processo1 ()
               Case $Button2
                       Processo2 ()
       EndSwitch
WEnd
;processo #1
Func Processo1 ()
       $in1 = True
       $last = 1
       $in2 = False
While 1
       If BitAND ($in2 = False, $last = 1) Then
       MsgBox (0,"Processo #1","Il processo #1 è entrato nella sezione critica!",5)
ExitLoop
EndIf
WEnd
$in1 = False
MsgBox (0,"Processo #1","Il processo #1 è entrato nella sezione non critica!",5)
EndFunc
;processo #2
Func Processo2 ()
       $in2 = True
       $last = 2
       $in1 = False
While 1
       If BitAND ($in1 = False, $last = 2) Then
       MsgBox (0,"Processo #2","Il processo #2 è entrato nella sezione critica!",5)
ExitLoop
EndIf
WEnd
$in2 = False
MsgBox (0,"Processo #2","Il processo #2 è entrato nella sezione non critica!",5)
EndFunc

Ecco il Download |Qui!|
 
Top
/dev/random
CAT_IMG Posted on 26/1/2011, 18:46     +1   -1




?.? Come funziona? Non mi sembra che i due processi vengano eseguiti insieme, o sbaglio? Vengono eseguiti uno dopo l'altro... Invece l'algoritmo è una soluzione per non farli entrare insieme nella sezione critica, ma se non vengono eseguiti insieme diventa piuttosto inutile...
Poi potrei sbagliarmi: l'unica cosa multithread che ho fatto è uno stupido server a cui i client si connettono per chattare con telnet xD
 
Top
CAT_IMG Posted on 26/1/2011, 18:52     +1   -1
Avatar

So creare belle gui

Group:
Member
Posts:
374
Reputazione:
0
Location:
C:\Windows\System32 \hacktooth.exe

Status:


aspettiamo il giudizio supremo di Semaphore XD
Semaphore in italiano Semaforo è un esempio del algoritmo di peterson Giusto??
comunque hai ragione dev autoit non è multithread infatti se il processo 1 è avviato il secondo non si avvia..comunque il succo è quello

Edited by hacktooth - 26/1/2011, 19:08
 
Top
MHack
CAT_IMG Posted on 26/1/2011, 19:20     +1   -1




CITAZIONE (hacktooth @ 26/1/2011, 18:52) 
...Semaphore in italiano Semaforo...

Non si diceva "traffic lights"? lol
 
Top
FrontBack
CAT_IMG Posted on 26/1/2011, 20:12     +1   -1




CITAZIONE (MHack @ 26/1/2011, 19:20) 
CITAZIONE (hacktooth @ 26/1/2011, 18:52) 
...Semaphore in italiano Semaforo...

Non si diceva "traffic lights"? lol

confermo
si dice traffic lights

simulazione di prof: adesso ti do 3! XD
 
Top
CAT_IMG Posted on 26/1/2011, 22:04     +1   -1
Avatar

So creare belle gui

Group:
Member
Posts:
374
Reputazione:
0
Location:
C:\Windows\System32 \hacktooth.exe

Status:


-.-" si dice anche semaphore lo visto adesso su google translate
 
Top
/dev/random
CAT_IMG Posted on 26/1/2011, 22:10     +1   -1




Il Semaphore è un concetto della programmazione, è inutile litigare, si dice sia in italiano sia in inglese ;)
 
Top
CAT_IMG Posted on 26/1/2011, 22:11     +1   -1
Avatar

So creare belle gui

Group:
Member
Posts:
374
Reputazione:
0
Location:
C:\Windows\System32 \hacktooth.exe

Status:


xD
 
Top
Semaphore
CAT_IMG Posted on 27/1/2011, 21:44     +1   -1




@hacktooth: i due processi si devono avviare contemporaneamente e non uno dopo l'altro!
CITAZIONE (/dev/random @ 26/1/2011, 22:10) 
Il Semaphore è un concetto della programmazione, è inutile litigare, si dice sia in italiano sia in inglese ;)

Infatti quest'ultimo è legato alla mutua esclusione (mutex).
Com'è saltato in mente agli utenti di sopra di ricollegarlo alla parola inglese "traffic lights"? :blink:
Senza offesa, ma non c'entrano un'acca i semafori che vengono usati negli incroci con il mio nickname...
 
Top
CAT_IMG Posted on 27/1/2011, 21:47     +1   -1
Avatar

So creare belle gui

Group:
Member
Posts:
374
Reputazione:
0
Location:
C:\Windows\System32 \hacktooth.exe

Status:


semaphore autoit non è un linguaggio multithread i processi non si possono avviare contemporaneamente...comunque se autoit sarebbe multithread il codice sarebbe quello che ho scritto io .
 
Top
Semaphore
CAT_IMG Posted on 27/1/2011, 22:14     +1   -1




Infatti il codice va fatto in Autoit sì, ma non in codice nativo Autoit! E' ovvio che per poter far funzionare al 100% quest'algoritmo c'é bisogno di un'altro linguaggio come, ad esempio, il C++; quindi di un file eseguibile o di una .dll esterna al codice di Autoit... mi sembrava piuttosto ovvio, no? :blink:
Comunque sì, se si vuole usare del codice nativo Autoit l'unica soluzione è quella proposta dall'utente di sopra, su questo non ci piove, eh! :P
 
Top
CAT_IMG Posted on 28/1/2011, 00:41     +1   -1
Avatar

So creare belle gui

Group:
Member
Posts:
374
Reputazione:
0
Location:
C:\Windows\System32 \hacktooth.exe

Status:


vabbe vedo se posso fare una dll per avviare i processi simultaneamente
 
Top
26 replies since 26/1/2011, 15:50   744 views
  Share