2012-12-03 18 views
6

Próbowałem załadować pakiet najwyraźniej napisane dla wcześniejszej wersji Pharo (Ratpack, z http://ss3.gemstone.com/ss/RatPack.html do Pharo 1.4).Co to są zmienne specyficzne dla procesu?

Pojawiły się ostrzeżenia o wycofaniu dotyczące usługi environmentAt:put:, które nie są obsługiwane przez Project.

Sposób postępowania, zgodnie z dokumentacją, to użycie ProcessSpecificVariable.

Moje pytania są następujące:

  • Co to jest?
  • Jak ich używać?
  • Jak przenieść "starszy" (przestarzały) kod do tego nowego systemu?

Dzięki!

Odpowiedz

4

można znaleźć dyskusję PSS w issue tracker

Oto urywek przez Igora jak używać ProcessSpecificVariables:

Załóżmy MyProcessSpecificVar jest podklasą ProcessSpecificVariable.

Następnie można zrobić:

[ MyProcessSpecificVar value: foo. ] fork. 

[ MyProcessSpecificVar value. ] fork. 

etc, to znaczy w taki sam sposób jak stary realizacji pozwala to zrobić.

Ale z nowym realizacji, można również użyć instancji, więc nie trzeba utworzyć nową klasę za każdym var procesów specyficznych możesz użyć:

mykey := MyProcessSpecificVar new. 


[ mykey value ] fork. 
[ mykey value: 10 ] fork. 
+0

w którym to przypadku Potrzebuję tego drugiego wariantu? Co się stanie, jeśli odwołam się do 'mykey' z dwóch różnych procesów? –

+1

W przypadku klucza mykey każdy proces będzie miał własną wartość, tak jak w przypadku różnych klas. Ta forma może być użyta, aby nie trzeba było definiować nowej klasy dla każdego PSV, ale używać tej samej klasy dla podobnych (w naturze) PSV. Dla próbki klasy PSV spójrz na: TestLocalVariable –

+0

, zobacz "ProcessSpecificTest", aby uzyskać więcej szczegółów i nie sądzę, że pierwsza wersja ma sens, chyba że naprawdę chcesz mieć bardzo statyczny obiekt globalny na wątek. – camillobruni