Ich habe ein Problem beim ausführen mehrer Threads welche auf die selben
Globalen Variablen zugreifen müssen.
Das Problem taucht nicht gleich auf erst nach ein paar durchläufen verhält sich
ein Ausgang des PiFace nicht mehr wie erwartet (blinkt mit sehr hoher Frequenz oder dauerhaft).
Nun ist die Frage ob das daher kommt das es irgendwann zu Überschneidungen zwischen
Schreiben der Variable in der Hauptschleife und lesen in einer der Threads.
für etwas Hilfe wäre ich sehr dankbar!
Code: Alles auswählen
import pifacedigitalio as pfio
from time import sleep
from concurrent import futures
wertA = [0.800,0.800,0.800]
wertB = [0.200,0.200,0.200]
pfio.init()
Thread = futures.ThreadPoolExecutor(max_workers=3)
def test1():
while(1):
pfio.digital_write(0,1)
sleep(wertA[0])
pfio.digital_write(0,0)
sleep(wertB[0])
def test2():
while(1):
pfio.digital_write(1,1)
sleep(wertA[1])
pfio.digital_write(1,0)
sleep(wertB[1])
def test3():
while(1):
pfio.digital_write(2,1)
sleep(wertA[2])
pfio.digital_write(2,0)
sleep(wertB[2])
Thread.submit(test1)
Thread.submit(test2)
Thread.submit(test3)
while(1):
print('A')
wertA[0] = 0.800
wertA[1] = 0.800
wertA[2] = 0.800
wertB[0] = 0.200
wertB[1] = 0.200
wertB[2] = 0.200
sleep(1)
print('B')
wertA[0] = 0.300
wertA[1] = 0.300
wertA[2] = 0.300
wertB[0] = 0.700
wertB[1] = 0.700
wertB[2] = 0.700
sleep(1)