eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingWybór języka/technologii pod konkretne wymagania, konkretnego przypadku ludzkiego :)Re: Wybór języka/technologii pod konkretne wymagania, konkretnego przypadku ludzkiego :)
  • Data: 2013-05-19 18:20:04
    Temat: Re: Wybór języka/technologii pod konkretne wymagania, konkretnego przypadku ludzkiego :)
    Od: A.L. <a...@a...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On Sun, 19 May 2013 05:05:06 +0100, Andrzej Jarzabek
    <a...@g...com> wrote:

    >On 18/05/2013 02:34, A.L. wrote:
    >> On Fri, 17 May 2013 07:33:00 +0100, Andrzej Jarzabek
    >>>
    >>> Może nie najszczęśliwiej dobrane słowo. Chodzi o to, że to to samo, co
    >>> mutex i condition variable. Główny problem z użyciem tych konstruktów
    >>> jest poprawny projekt, a w tym temacie synchronized/notify nie pomaga.
    >>
    >> Niestety, nie rozumiem.
    >> Mozna prosic o szczegoly?...
    >
    >Po pierwsze, fakt istnienia w Javie synchronized i notify nie chroni
    >przed problemami z wątkami.

    Fakt. Tzreba umiec uzywac je w sposob wlasciwy

    >I tak trzeba wiedzieć, które obiekty są
    >dostępne z wielu wątków i trzeba sobie zaprojektować co ma być
    >synchronized, w jaki sposób wątki się powiadamiają i tak dalej.
    >

    To tzreba zawsze wiedziec, niezaleznie ud uzytych narzedzi

    >Ponadto - co prawda użycie synchronized i notify eliminuje część
    >możliwych kombinacji z mutexami i condition variables (ale nadal beez
    >gwarancji, że takie nie wystąpią, bo jawne mutexy też przecież w Jaie
    >są), to wiedząc jak działają, ten sam efekt można w innych językach
    >łatwo (przynajmniej w C++ łatwo) uzyskać przy pomocy mutex i condition
    >variable.

    Stwierdzenie jest trywialne. Java implementuje koncepcje "monitora"
    wprowadzona pzrez Hoare i Brinch Hansena. Jest to konstrukcje wyzszego
    poziomu niz "gole" mutexy. Oczywiscie, mozna zaimplementowac monitor
    poslugujac sie wylacznie semaforami (co jest standardowym cwiczeniem
    studenckim) ale to ma taka sama sile jak stwierdzenie ze "obiekty
    takie jak w C++ sa niepotzrebne bo mozna je latwo zaimplementowac w C
    poslugujac sie pointerami i makroprocesorem". Owszem, mozna. Ale
    obiektowo programuje sie latwiej majac jezyk wspierajacy obiekty;
    podobnie wielowatkowo programujesie latwiej majac jezyk wspierajacy
    konstrukcje wyzszego poziomu niz mutex.

    W Javie wystepuja mutexy, bo nei wszystkie problemy wzajemnego
    wykluczania dadza sie zaimplementowac poslugujac sie "synchronized"
    (albo byloby to bardzo nieczytelne). Do takich problemow nalezy na
    przykald "wzajemne wykluczanie na grafie".

    >Szczegółowo mam opisać jakbym taki odpowiednik zaimplementował
    >w C++, czy nie ma takiej potrzeby?
    >

    Nie, nie ma potrzeby uczyc mnie programowania wielowatkowego. Uczylem
    tego 15 lat

    >Z tego co przeczytałem zresztą, to wygląda jakby C# oferował tę samą
    >funkcjonalność przez klasę Monitor, polecenie lock i anotację
    >[MethodImpl(MethodImplOptions.Synchronized)]. Mimo to OP przy wymaganiu
    >o łatwej obsłudzę wątków wymienia swoje problemy z C# właśnie.

    Owszem, C# oferuje bardzo podobny model monitora jak Java

    Co nie znaczy ze monitor jest konstrukcja idealna... Sam Hoare wycofal
    sie z tego konceptu proponujac w zamian CSP (Communicating Sequential
    Processes)

    A.L.

    P.S. Jezeli ktos chce spojrzec glebiej na model wielowatkowosci w
    javie, polacam nastepujaca prezentacje

    http://www.cs.kent.ac.uk/projects/ofa/jcsp/csp-java-
    model-6up.pdf

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: