zamieniłem int na float w case 4
Wersja do druku
Niewiele robiłem w C#, ale tam nie ma 'explicit' bloków synchronized jak w Javie - odpowiednikiem tego jest anotacja:
A z tego co widzę (a przynajmniej doc mi tak mówi) nie jest to operacja z taką anotacją.Kod:[MethodImpl(MethodImplOptions.Synchronized)]
Niemniej jednak, dopóki używasz osobnych iteratorów per wątek i nie mutujesz tego dictionary, to oczywiście możesz bezkarnie po nim przejeżdżać ;).
EDIT. Nie zapomnij jednak o jakimś odpowiedniku rwlocka (bo w C głównie bawiłem się wątkami, sorki ;P) w przypadku, gdy Twój przypadek użycia pasuje do jakiegoś modelu producent/konsument - czyli ktoś mutuje kolekcję, a Ty ją czytasz na bieżąco ;).
Pozdrawiam
Killavus
Tak swoją drogą, czy tylko ja uważam annotacje za badziew łamiący w chuj konwencji programistycznych? @Killavus ;
Mutuje , w sensie że zmieniam? No właśnie, możliwe jest, że któryś wątek coś doda, coś usunie, więc skoro one mają locka na dany dictionary, to chyba to szukanie też powinno, bo nigdy nie wiadomo kiedy add i find polecą na raz, right?
Co do anotacji: nikt Ci tego lepiej nie wytłumaczy jak Greg Young, serdecznie polecam:
http://www.infoq.com/presentations/8...de-refactoring
Tak, to syf. ;)
Mutuje, w sensie że zmieniam. Czytanie danych przez wiele wątków jest względnie bezpieczne - chyba że czytanie powoduje warunki uboczne takie jak np. w drzewach splay. W przeciwnym wypadku czytaj do woli bez locków. Jeżeli jednak dodajesz np. elementy, musisz już zapewnić pewnego rodzaju synchronizację - read/write lock się do tego bardzo dobrze nadaje. Inna metoda (pochodząca bardziej z FP) to duplikacja kolekcji i operowanie na nowej przy zmianach - wtedy wątki 'w trakcie' nie wiedzą, że cokolwiek się zmieniło, a nowe czytania czytają już nową kolekcję.
PS Co to za irytujący ficzer forum, że dodaje mi jakieś NIEDOZWOLONY_CIAG_ZNAKOW w randomowych miejscach? :P
Pozdrawiam
Killavus
na java code formatting covention, sama w sobie nie jest taka zła, o ile ją dobrze pisać
Dodam jeszcze artykuł gościa, którego mam poniekąd z autorytet w PHP :P
http://r.je/php-annotations-are-an-abomination.html
Tak więc - nie używajcie annotacji, one ssą!
@zakius ;
Nie rozumiem dlaczego klepanie wątków z obszarem krytycznym jest przykre :P
Bo czasami trzeba przy tym włączyć te głęboko ukryte obszary mózgu odpowiedzialne za myślenie, a nie tylko klepanie warunków jak w większości aplikacji użytkowych (chociaż te z drugiej strony są dość nudne :/)
also: prypomnialem sobie: sekcja krytyczna to się chyba najladniej nazywa
[C#] Jak w zgrabny sposób liczyc wywołania danej metody? Coś oprocz dodawania pola statycznego w klasie ;s
zmienna globalna :kappa
ale serio to się chyba inaczej nie da, możesz rzucać do bazy apdejtem, przy każdym wywołaniu insert do tabeli z auto incrementem, pisać do pliku
ale chyba lepiej wybrać mniejsze zło
Ajć, myslalem ze jest cos jeszcze o czym nie wiedziałem ;s
Kolejna sprawa, mam metodę publiczną która wywołuje jedna z prywatnych: getAndroidColor, getUIColor. Obie te metody zwraca różne typy: System.Android oraz UIColor. I teraz co ma zwracac ta moja metoda publiczna, która je wywołuje? :D
Może byte[] ?? W ogole jakie jest zastosowanie byte[] ?