Thread [ithreads] Punkt in Polygon-Tests (1 answers)
Opened by pinwheel at 2016-03-12 17:33

murphy
 2016-03-12 22:12
#184133 #184133
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Da der Thread im Hintergrund läuft und zeitlich irgendwann vor oder nach dem Aufruf der join Methode seine Arbeit beenden kann, ist es ihm nicht möglich den Kontext seines Rückgabewertes aus diesem Aufruf abzuleiten.

Standardmäßig hat ein Thread Skalarkontext, weshalb in diesem Beispiel die beiden Aufrufe von join jeweils nur die Anzahl der aufgesammelten Listenelemente zurückgeben.

Man kann den Threads aber explizit sagen, dass sie im Listenkontext laufen sollen. Ersetzt man Zeile 22-23 des Codes durch
Code (perl): (dl )
1
2
my $thread1 = threads->new( { context => 'list' }, \&test, $from, $over );
my $thread2 = threads->new( { context => 'list' }, \&test, $over + 1, $until );
so funktioniert das Beispiel.

Alternativ kann man natürlich auch eine Arrayreferenz statt einer Liste zurückgeben.
When C++ is your hammer, every problem looks like your thumb.

View full thread [ithreads] Punkt in Polygon-Tests