Jump to content
Nokioteca Forum

[pys60] Thread


Enzo74
 Share

Recommended Posts

ciao ragazzi stavo provando del codice sui thread ma mi sono imbattuto in una routine dove è vero che non mi restituisce errori ma anche non fà quello che vorrei.

praticamente volevo dei print (tre del primo thread e tre del secondo)...

cosa sarà sbagliato?

import thread

running = 1

def funzione1():

while running:

print "thread1_1"

print "thread1_2"

print "thread1_3"

def funzione2():

thread.start_new_thread(funzione1, ())

print "thread2_1"

print "thread2_2"

print "thread2_3"

def funzione3():

global running

running = 0

Link to comment
Condividi su altri siti

a funzionare funziona il metodo per far partire un thread parallelo l'ho gia utilizzato.. ma.. quello script è tutto li? ti manca cmq di far partire la funzione 2 o.o

funzione2() a fine script per esempio..

in quel modo ok dichiari tutte le funzioni ma... non ne viene eseguita nemmeno 1 o.O

Link to comment
Condividi su altri siti

Presumo che manca la parte relativa al menu che chiama le varie funzioni, vero?

Postalo completo che si può dare un'occhiata.

[edit]

Scrivendolo da console:

quando viene chiamata la funzione2, il programma fa il print relativo alla funzione2 ma chiama come funzione il contenuto di funzione1.

Praticamente si ottiene questo:

>>>funzione2()

thread2_1

>>>thread1_1

e il programma è in attesa dell'invio

Modificato da Oper
Link to comment
Condividi su altri siti

a rigor di logica, se esegui prima la funzione 1 e poi la funzione 2, la funzione 2 non verrà eseguita fino a quando la funzione 1 non finisce il suo ciclo, al contrario se esegui prima la funzione 2 e poi la funzione 1, la funzione 2 è vero che richiama la funzione 1, ma sotto thread (processo parallelo indipendente dal processo principale dell'applicazione), per questo motivo dopo la funzione 2 viene eseguita la funzione 1..

in teoria dovrebbe essere cosi, in pratica non ho provato...

Link to comment
Condividi su altri siti

Non e' detto che esegua un print ciascuno, potrebbe eseguirne zero, uno o piu' di uno... dipende tutto dall'algo interno al sistema operativo che si occupa di stabilire quale thread mandare in esecuzione e per quanto tempo, a seconda di qual'e' lo stato attuale.

Uno degli algo piu' consciuti e diffusi per questo compito, e' il round-robin http://it.wikipedia.org/wiki/Scheduler

Ma non mi stupirei che su symbian (<9.1) sia tutto gestito con il piu' grezzo fcfs (first come first served)

Modificato da Il.Socio
Link to comment
Condividi su altri siti

Please sign in to comment

You will be able to leave a comment after signing in



Accedi Ora
 Share

×
×
  • Crea Nuovo...

Informazione Importante

Questo sito utilizza i cookie per analisi, contenuti personalizzati e pubblicità. Continuando la navigazione, accetti l'utilizzo dei cookie da parte nostra | Privacy Policy