eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingpytanie z mutexów
Ilość wypowiedzi w tym wątku: 94

  • 51. Data: 2013-06-23 22:25:56
    Temat: Re: pytanie z mutexów
    Od: Andrzej Jarzabek <a...@g...com>

    On 23/06/2013 19:42, Michoo wrote:
    >
    >> Proponuje to zrobic przy pomocy mutexow lub nawet cmpxchg.
    >
    > A myślisz, że co niby leży "pod spodem" kolejek komunikatów? W javie
    > wszystkie synchronized() to jest właśnie na x86 cmpxchg.

    Pomijając wszystko inne, czy twierdzisz, że instrukcja procesora cmpxch
    potrafi wykonać czynność "wstrzymaj wykonanie wątku do momentu..."? Jak
    to się niby odbywa - przecież wątek jest bytem funkcjonującym na
    poziomie co najmniej systemu operacyjnego (jeśli nie wręcz maszyny
    wirtualnej)?


  • 52. Data: 2013-06-23 22:55:26
    Temat: Re: pytanie z mutexów
    Od: firr <p...@g...com>

    W dniu niedziela, 23 czerwca 2013 22:25:56 UTC+2 użytkownik Andrzej Jarzabek napisał:
    > On 23/06/2013 19:42, Michoo wrote:
    >
    > >
    >
    > >> Proponuje to zrobic przy pomocy mutexow lub nawet cmpxchg.
    >
    > >
    >
    > > A myślisz, że co niby leży "pod spodem" kolejek komunikatów? W javie
    >
    > > wszystkie synchronized() to jest właśnie na x86 cmpxchg.
    >
    >
    >
    > Pomijając wszystko inne, czy twierdzisz, że instrukcja procesora cmpxch
    > potrafi wykonać czynność "wstrzymaj wykonanie wątku do momentu..."? Jak
    > to się niby odbywa - przecież wątek jest bytem funkcjonującym na
    > poziomie co najmniej systemu operacyjnego (jeśli nie wręcz maszyny
    > wirtualnej)?


    potrzebna jest jeszcze funkcja suspend_() ktora
    przerzuci procesor na kolejny watek i ta funkcja
    chyba nie musi byc chyba zbyt skomplikowana
    - kiedys nalezaloby napisac sobie na sucho
    kod takiego schedulera by ocenic jak wydajne to
    moze byc (ale to musialbym byc mniej wykonczony
    niz teraz by zajmowac sie takimi pobocznymi
    rzeczami)


  • 53. Data: 2013-06-23 23:33:48
    Temat: Re: pytanie z mutexów
    Od: Edek <e...@g...com>

    Dnia Sun, 23 Jun 2013 13:55:26 -0700 po głębokim namyśle firr rzekł:

    > W dniu niedziela, 23 czerwca 2013 22:25:56 UTC+2 użytkownik Andrzej
    > Jarzabek napisał:
    >> On 23/06/2013 19:42, Michoo wrote:
    >> > A myślisz, że co niby leży "pod spodem" kolejek komunikatów? W javie
    >>
    >> > wszystkie synchronized() to jest właśnie na x86 cmpxchg.
    >>
    >>
    >>
    >> Pomijając wszystko inne, czy twierdzisz, że instrukcja procesora cmpxch
    >> potrafi wykonać czynność "wstrzymaj wykonanie wątku do momentu..."? Jak
    >> to się niby odbywa - przecież wątek jest bytem funkcjonującym na
    >> poziomie co najmniej systemu operacyjnego (jeśli nie wręcz maszyny
    >> wirtualnej)?
    >
    >
    > potrzebna jest jeszcze funkcja suspend_() ktora przerzuci procesor na
    > kolejny watek i ta funkcja chyba nie musi byc chyba zbyt skomplikowana -
    > kiedys nalezaloby napisac sobie na sucho kod takiego schedulera by
    > ocenic jak wydajne to moze byc (ale to musialbym byc mniej wykonczony
    > niz teraz by zajmowac sie takimi pobocznymi rzeczami)

    Megaglabiada, człowieku orkiestro. Ty się po prostu nie nadajesz.

    --
    Edek


  • 54. Data: 2013-06-24 00:21:12
    Temat: Re: pytanie z mutexów
    Od: Michoo <m...@v...pl>

    On 23.06.2013 22:25, Andrzej Jarzabek wrote:
    > On 23/06/2013 19:42, Michoo wrote:
    > >
    >>> Proponuje to zrobic przy pomocy mutexow lub nawet cmpxchg.
    >>
    >> A myślisz, że co niby leży "pod spodem" kolejek komunikatów? W javie
    >> wszystkie synchronized() to jest właśnie na x86 cmpxchg.
    >
    > Pomijając wszystko inne, czy twierdzisz, że instrukcja procesora cmpxch
    > potrafi wykonać czynność "wstrzymaj wykonanie wątku do momentu..."?

    Oczywiście, że nie. Instrukcja ta pozwala na dwie rzeczy(mówimy o SMP):
    - możliwie bezkosztowe (kilka cykli) uzyskanie blokady na wyłączność
    (wejście do sekcji krytycznej)
    - możliwie bezkosztowe wstawianie/usuwanie obiektów z kolejek

    > Jak
    > to się niby odbywa - przecież wątek jest bytem funkcjonującym na
    > poziomie co najmniej systemu operacyjnego (jeśli nie wręcz maszyny
    > wirtualnej)?

    W pierwszym przypadku jest polecam lekturę tego jak działają linuxowe
    FUTEXy. W skrócie chodzi o to, żeby w domyślnej ścieżce wykonania (gdy
    sekcja krytyczna jest wolna) nie wykonywać drogich odwołań do systemu
    operacyjnego. Gdy wątek musi i tak czekać to można sobie pozwolić na
    trochę dłuższą ścieżkę wykonania (i wtedy prosi system operacyjny o
    uśpienie).

    W drugim przypadku możemy mieć kolejkę producent(ci)->konsument(ci)
    która nie wymaga blokowania ("lock-free") a więc oszczędzamy całkiem
    sporo czasu na usypianiu i budzeniu wątków.

    --
    Pozdrawiam
    Michoo


  • 55. Data: 2013-06-24 00:58:24
    Temat: Re: pytanie z mutexów
    Od: Edek <e...@g...com>

    Dnia Sun, 23 Jun 2013 20:42:02 +0200 po głębokim namyśle Michoo rzekł:

    > A myślisz, że co niby leży "pod spodem" kolejek komunikatów? W javie
    > wszystkie synchronized() to jest właśnie na x86 cmpxchg.

    Z tego co mi wiadomo, Java używa w tym celu mechanizmów OS. Na linuksie
    faktycznie są to futexy, ale na innych YMMV.

    --
    Edek


  • 56. Data: 2013-06-24 03:41:56
    Temat: Re: pytanie z mutexów
    Od: A.L. <a...@a...com>

    On Sun, 23 Jun 2013 20:42:02 +0200, Michoo <m...@v...pl> wrote:

    >On 23.06.2013 18:35, A.L. wrote:
    >>> Praktycznie ze względów wydajnościowych stosuje się tam gdzie to
    >>> dostępne cmpxchg.
    >>
    >> Ja uzywalem przez dluzszy czas JCSMP.
    >
    >Nie znam i google też milczy.
    >
    >> To jest Javowa implemenatcja CSP
    >> (Communication Sequential Processes) Hoare.
    >
    >JCSP?

    JCSP

    >
    >> Nie pamietam dokladnie,
    >> ale w ostatnim projekcie bylo cos 200 procesow i ponad 400 kanalow.
    >
    >Mam być pod wrażeniem? Nie jestem.
    >

    Gratulacje. Rozumiem ze dla Kolegi to pestka

    >>
    >> Proponuje to zrobic przy pomocy mutexow lub nawet cmpxchg.
    >
    >A myślisz, że co niby leży "pod spodem" kolejek komunikatów? W javie
    >wszystkie synchronized() to jest właśnie na x86 cmpxchg.
    >
    >
    >Oczywiste jest, że istnieją wygodne wysokopoziomowe sposoby na radzenie
    >sobie z wielowątkowością(choćby lubiane prze mnie producent-konsument
    >albo reaktor), ale koniec końców "na dnie" synchronizacja zazwyczaj jest
    >robiona flagą a nie muteksem.

    Co mnie obchodzi co jest "na dnie"?... Czy Kolega proponuje ze
    neizbednym nazredziem programisty powinan byc lutownica? Ja pamietem
    te czasy, ale na szczescie odeszly w niebyt.

    A.L.


  • 57. Data: 2013-06-24 07:34:27
    Temat: Re: pytanie z mutexów
    Od: Andrzej Jarzabek <a...@g...com>

    On 23/06/2013 23:21, Michoo wrote:
    > On 23.06.2013 22:25, Andrzej Jarzabek wrote:
    >
    >> Pomijając wszystko inne, czy twierdzisz, że instrukcja procesora cmpxch
    >> potrafi wykonać czynność "wstrzymaj wykonanie wątku do momentu..."?
    >
    > Oczywiście, że nie.
    [...]

    Dziękuję.

    >> Jak
    >> to się niby odbywa - przecież wątek jest bytem funkcjonującym na
    >> poziomie co najmniej systemu operacyjnego (jeśli nie wręcz maszyny
    >> wirtualnej)?
    >
    > W pierwszym przypadku jest polecam lekturę tego jak działają linuxowe
    > FUTEXy.
    [...]

    WIem jak działają.

    > W drugim przypadku możemy mieć kolejkę producent(ci)->konsument(ci)
    > która nie wymaga blokowania ("lock-free") a więc oszczędzamy całkiem
    > sporo czasu na usypianiu i budzeniu wątków.

    Chodziło mi o to, że samymi atomowymi instrukcjami nie zapewnisz tego,
    co z definicji ma mieć javowe synchronized - usypianie i budzenie
    wątków. Musisz mieć wsparcie systemu operacyjnego i tyle. To, że
    istnieją optymalizacje pozwalające odwoływać się do tego systemu
    rzadziej to miłe, ale niezmienia zasadniczego problemu - pod spodem masz
    skomplikowaną maszynerięę, której CMPXCHG (lub inne atomowe instrukcje)
    są częścią.


  • 58. Data: 2013-06-24 08:13:39
    Temat: Re: pytanie z mutexów
    Od: firr <p...@g...com>

    W dniu poniedziałek, 24 czerwca 2013 07:34:27 UTC+2 użytkownik Andrzej Jarzabek
    napisał:
    > On 23/06/2013 23:21, Michoo wrote:
    >
    > > On 23.06.2013 22:25, Andrzej Jarzabek wrote:
    >
    > >
    >
    > >> Pomijając wszystko inne, czy twierdzisz, że instrukcja procesora cmpxch
    >
    > >> potrafi wykonać czynność "wstrzymaj wykonanie wątku do momentu..."?
    >
    > >
    >
    > > Oczywiście, że nie.
    >
    > [...]
    >
    >
    >
    > Dziękuję.
    >
    >
    >
    > >> Jak
    >
    > >> to się niby odbywa - przecież wątek jest bytem funkcjonującym na
    >
    > >> poziomie co najmniej systemu operacyjnego (jeśli nie wręcz maszyny
    >
    > >> wirtualnej)?
    >
    > >
    >
    > > W pierwszym przypadku jest polecam lekturę tego jak działają linuxowe
    >
    > > FUTEXy.
    >
    > [...]
    >
    >
    >
    > WIem jak działają.
    >
    >
    >
    > > W drugim przypadku możemy mieć kolejkę producent(ci)->konsument(ci)
    >
    > > która nie wymaga blokowania ("lock-free") a więc oszczędzamy całkiem
    >
    > > sporo czasu na usypianiu i budzeniu wątków.
    >
    >
    >
    > Chodziło mi o to, że samymi atomowymi instrukcjami nie zapewnisz tego,
    >
    > co z definicji ma mieć javowe synchronized - usypianie i budzenie
    >
    > wątków. Musisz mieć wsparcie systemu operacyjnego i tyle. To, że
    >
    > istnieją optymalizacje pozwalające odwoływać się do tego systemu
    >
    > rzadziej to miłe, ale niezmienia zasadniczego problemu - pod spodem masz
    >
    > skomplikowaną maszynerięę, której CMPXCHG (lub inne atomowe instrukcje)
    >
    > są częścią.

    to sie nawet zgadza (ze cmpxchg moze byloby z 1/1000
    calej operacji) ale tez chyba nie az tak
    skomplikowaną operacje

    kazdy watek ma swoj stan obejmujacy jakis przydział ram i ten stan chyba nie ulega
    zmianom, w momencie
    przerzucania watkow trzeba pewnie zrzucic rejestry i
    podniesc te zrzucone przez poprzedni watek, i wsio
    (?) - mogloby byc jako tako szybko

    nieststy obawiam sie jak zwykle ze sysstemy operacyjne costam ew chrzanią i jest to
    jakostam
    rozbudowane i muli

    potrzebna jest informacja jak wiele jakichs nieoszukanych pelnych przelaczen na
    sekunde
    moze wydolic dany system (jak byloby to milion
    to w miare ok, jak wiecej jak milion jeszcze
    lepiej ale jak mniej to nie tak dobrze)




  • 59. Data: 2013-06-27 22:33:02
    Temat: Re: pytanie z mutexów
    Od: Michoo <m...@v...pl>

    On 24.06.2013 03:41, A.L. wrote:
    > On Sun, 23 Jun 2013 20:42:02 +0200, Michoo<m...@v...pl> wrote:

    >>
    >>> Nie pamietam dokladnie,
    >>> ale w ostatnim projekcie bylo cos 200 procesow i ponad 400 kanalow.
    >>
    >> Mam być pod wrażeniem? Nie jestem.
    >>
    >
    > Gratulacje. Rozumiem ze dla Kolegi to pestka

    Nie powiedziałem tego - wygląda na parę miesięcy solidnej,
    rzemieślniczej pracy. Tylko to nic nie wnosi do dyskusji.

    >
    >>>
    >>> Proponuje to zrobic przy pomocy mutexow lub nawet cmpxchg.
    >>
    >> A myślisz, że co niby leży "pod spodem" kolejek komunikatów? W javie
    >> wszystkie synchronized() to jest właśnie na x86 cmpxchg.
    >>
    >>
    >> Oczywiste jest, że istnieją wygodne wysokopoziomowe sposoby na radzenie
    >> sobie z wielowątkowością(choćby lubiane prze mnie producent-konsument
    >> albo reaktor), ale koniec końców "na dnie" synchronizacja zazwyczaj jest
    >> robiona flagą a nie muteksem.
    >
    > Co mnie obchodzi co jest "na dnie"?...

    Dyskusja dotyczyła podstawowego elementu synchronizacji. Semafor Dijskry
    nie jest prostszy niż semafor binarny o semantyce test-and-set (który ma
    wsparcie sprzętowe na większości współczesnych maszyn) a ma pewne
    istotne wady (jak brak gwarancji na zagłodzenie). W praktyce implantacja
    semafora _wymaga_ więc listy procesów oczekujących.

    A tak ładnie wyglądające w teorii komunikowanie liczby elementów w
    kanale za pomocą odpowiednich ilości p i v w praktyce znacznie ładniej i
    mniej błędogennie wychodzi w kombinacji put i blokującego get lub
    nieblokującego try-get.

    > Czy Kolega proponuje ze
    > neizbednym nazredziem programisty powinan byc lutownica?

    Zależy co się programuje - czasami tak.

    > Ja pamietem
    > te czasy, ale na szczescie odeszly w niebyt.

    Jestem właśnie po maratonie z javą - klientom się kończyły zasoby. "W
    dawnych czasach" nikt by nawet nie pomyślał o alokowaniu w sumie
    kilkunastu milionów obiektów wewnątrz procedury porównującej mergesorta
    po to aby sprawdzić czy dwie daty wskazują na ten sam dzień.

    --
    Pozdrawiam
    Michoo


  • 60. Data: 2013-06-27 22:58:55
    Temat: Re: pytanie z mutexów
    Od: A.L. <a...@a...com>

    On Thu, 27 Jun 2013 22:33:02 +0200, Michoo <m...@v...pl> wrote:

    >
    >Dyskusja dotyczyła podstawowego elementu synchronizacji. Semafor Dijskry
    >nie jest prostszy niż semafor binarny o semantyce test-and-set (który ma
    >wsparcie sprzętowe na większości współczesnych maszyn) a ma pewne
    >istotne wady (jak brak gwarancji na zagłodzenie). W praktyce implantacja
    >semafora _wymaga_ więc listy procesów oczekujących.
    >

    Obawiam sie ze nie zrozumiemy sie.

    >A tak ładnie wyglądające w teorii komunikowanie liczby elementów w
    >kanale za pomocą odpowiednich ilości p i v w praktyce znacznie ładniej i
    >mniej błędogennie wychodzi w kombinacji put i blokującego get lub
    >nieblokującego try-get.
    >

    Obawiam sie ze nei zrozumiemy sie. Chyba operujemny na roznych
    poziomach abstrakcji. I roznych poziomach praktyki.

    >Jestem właśnie po maratonie z javą - klientom się kończyły zasoby. "W
    >dawnych czasach" nikt by nawet nie pomyślał o alokowaniu w sumie
    >kilkunastu milionów obiektów wewnątrz procedury porównującej mergesorta
    >po to aby sprawdzić czy dwie daty wskazują na ten sam dzień.

    Idioci byli zawsze - tylko stopien idiotyzmu byl (i jest)
    proporcjonalny do spzretowych mozliwosci

    P.S. Zadam to samo zadanko co kiedys: procesy a, b, c, d, e, f

    Wzajemne wykluczanie: (a,c), (c,f), (a,b), (b,e), (b,d), (c,d), (e,f)

    Zaprojeltowac rozwiazanie bez deadlocku i starvation free

strony : 1 ... 5 . [ 6 ] . 7 ... 10


Szukaj w grupach

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: