8 berichten aan het bekijken - 1 tot 8 (van in totaal 8)
  • Q:
    Bijdrager
    Sixer

    Multitasking & multithreading

    Hoi,

    Ik heb net op IRC een discussie over multitasking en multithreading
    in OS X en vraag me af hoe d’r hier over wordt gedacht.

    Het komt erop neer dat ik de multitasking in OS X eigenlijk best wel
    een grap vind.

    Als je een AppleShare-mount open hebt en je netwerk valt weg, dan
    kan je Finder het shaken. Een Force Quit is noodzakelijk tenzij je
    tijd hebt om op de ellenlange timeout te wachten.

    Als je Safari hangt op een php-script met een oneindige output of een
    Flash app crasht, kun je je Safari shaken, inclusief alle andere open
    Safari-vensters.

    Hoe past dit in het multithreading dat OS X zou moeten doen?

    Waarom zijn deze apps niet zo geschreven dat wanneer één thread
    van een app hangt, dat de rest gewoon blijft draaien?

    Ik heb überhaupt nog nooit een app gezien met onafhankelijke
    subprocessen, en begrijp eigenlijk niet hoezo dit anno 2006 niet
    mogelijk is.

    Concreet bedoel ik dus dat als een Finder-venster hangt, dat ik nog
    in andere Finder-vensters verder zou moeten kunnen werken.
    Same goes for Safari.

    Even ter vergelijking met *cough* Windows:

    Als je ene iexplore.exe crasht, blijft de rest gewoon draaien. Dit
    wellicht omdat iedere ‘instance’ van iexplore.exe apart draait, maar
    ja, de (m.i. terechte) keuze van Apple om 1 exemplaar van een app
    te laten draaien en daaronder met verschillende vensters te werken,
    lijkt me nog geen reden voor die verschillende vensters om niet los
    van elkaar te kunnen werken.

    Kortom: Is OS X z’n multitasking niet gewoon een grap?

    Bijdrager
    computer space

    Standaard draait windows ook meerdere vensters in een proces. Wel heb je de mogelijkheid applicaties vaker naast elkaar op te starten. Maar dat doet ook bijna niemand, en crashed dus alles van een applicatie net zo hard tegelijk.
    Daarbij is een hangende verkenner in Windows vele malen irritanter dan een even opnieuw opstartende finder op de mac. Komt ook nog bij dat de ramcache van OSX weer veel beter is dan windows (misschien heeft ie meer lucht omdat ie nooit iets twee keer opstart). Een keer een dikke render in Autocad starten onder windows, en alles wordt trage stront. Zo erg dat alleen 5sec power-on indrukken nog helpt. Getuigt ook niet echt van soepele multitasking.

    Bijdrager
    Sixer

    Mja, Windows zuigt ook, maar verder ben je dus met
    me eens dat de multitasking in OS X (ook) een grap is?

    Bijdrager
    computer space

    Ik vind het zeker geen grap. Alleen in sporadische gevallen (bijvoorbeeld flash, maar dat ligt hws aan de crappy osx implementatie door Macromedia) zou ik wel eens een applicatie 2x willen starten. Verder loopt er zelden iets vast. En de respons van achtergrondapplicaties in osx is fenomenaal. Expose op windows zou niet eens kunnen :P

    Bijdrager
    Sixer

    Ik heb het ook niet over het 2x willen draaien van een app,
    en hoe vaak iets vastloopt zegt misschien iets over de nood-
    zaak van ‘echte’ multithreading, maar zegt niets over hoe
    modern de huidige multithreading in OS X is.

    En die vind ik dus prehistorisch.

    Ik vind dat taken binnen een app niet afhankelijk van elkaar
    horen te (hoeven) zijn. Dus, bijvoorbeeld dat verschillende
    Finder-windows onafhankelijk werken. Dat lijkt me eigenlijk
    anno 2006 erg normaal, en erg wenselijk..

    Bijdrager
    Cenobyte
    ”Sixer”

    Ik vind dat taken binnen een app niet afhankelijk van elkaar
    horen te (hoeven) zijn. Dus, bijvoorbeeld dat verschillende
    Finder-windows onafhankelijk werken. Dat lijkt me eigenlijk
    anno 2006 erg normaal, en erg wenselijk..

    Mag ik je vragen of je zelf programmeert?

    Ik ook niet echt serieus, maar ik weet wel dat goede multithreading niet alleen van het OS afhangt. Als een instance van een programma crashed (bijv 1 venster van Finder) dan lijkt het mij normaal dat het hele programma crashed of in ieder geval wordt beeindigd. Het programma beheert namelijk zelf zijn threads en er is ook onderlinge uitwisseling van gegevens tussen threads. Crashed zo’n thread dan moet het programma een goede foutopvanging hebben (hangt af van de programmeur) en moet het OS inderdaad toestaan dat de rest van het programma verder loopt.

    Is het twijfelachtig of een gecrashte thread zorgt voor een verder instabiel programma, dan is dat een slechte zaak. Het is dus niet zondermeer raar dat bij een crashende thread een programma wordt afgesloten.

    Overigens is dit bij Windows ook zo: Explorer crashed bij mij meestal als 1 thread vastloopt.

    Ik ben van mening dat dit niet prehistorisch is. OSX is gebaseerd op een Unix variant en dat OS staat bekend om het beste multitasking systeem in een regulier gebruikt OS.

    Bijdrager
    Sixer
    ”Cenobyte”

    Mag ik je vragen of je zelf programmeert?

    Yep, maar alleen voor ’t Web.

    Ik ook niet echt serieus, maar ik weet wel dat goede multithreading niet alleen van het OS afhangt. Als een instance van een programma crashed (bijv 1 venster van Finder) dan lijkt het mij normaal dat het hele programma crashed of in ieder geval wordt beeindigd.

    Ik heb het dan ook niet zozeer over crashen, maar
    over vastlopen: hangen. M.a.w, wanneer een proces
    eindeloos ergens op wacht of in een infinite loop is
    terechtgekomen.

    Voorbeelden hiervan zijn HTML-pagina’s in Safari
    die er erg (of oneindig) lang over doen om binnen te
    komen of gerenderd te worden, of een Finder die
    een timeout uitzit op een AppleShare-mount.

    Dit zijn dingen die m.i. niet zouden moeten hoeven
    leiden tot een Force Quit door de gebruiker.

    Multithreading zou moeten betekenen dat de ene,
    bijvoorbeeld, Finder-window, vastzit terwijl je de
    andere nog kunt benaderen.

    Bijdrager
    Cenobyte
    ”Sixer”

    Multithreading zou moeten betekenen dat de ene,
    bijvoorbeeld, Finder-window, vastzit terwijl je de
    andere nog kunt benaderen.

    Toch denk ik dat dat voornamelijk komt door de code van de Finder en niet van het OS. O.k., in weze is Finder onderdeel van het OS, maar je snapt hopelijk wat ik bedoel.

    Het fijne van multithreading weet ik niet, maar volgens mij is het zo geregeld dat het OS elke 10 milliseconde een stukje processortijd geeft aan de volgende thread. Wat er gebeurt als een thread vastloopt, weet ik niet precies, maar ik kan me herinneren dat dat in OSX beter geregeld was dan in Windows XP.

    Dus, bijvoorbeeld dat verschillende Finder-windows onafhankelijk werken. Dat lijkt me eigenlijk anno 2006 erg normaal, en erg wenselijk..

    Dat heeft voor- en nadelen. Onafhankelijk van elkaar werkende finders kan alleen als elke finder zijn eigen geheugenruimte heeft en dat kost relatief (te?) veel geheugen. Voordeel is wel weer dat 1 Finder kan crashen terwijl de anderen doorwerken. In feite zijn meerdere threads van 1 programma toch gewoon 1 programma, dus als een thread crashed, wordt het hele programma vaak afgesloten om rare toestanden te voorkomen. Het programma wordt in feite als “losgeslagen” bestempeld en beeindigd.

8 berichten aan het bekijken - 1 tot 8 (van in totaal 8)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.