Kodsnack 66 - Ju fler lås du använder desto sämre är ditt liv
2014-09-02 10:26Vi snackar trådar och utmaningarna i att försöka bygga program som gör flera saker på en gång. Vi drar paralleller mellan tråd- och minneshantering, ett annat område som också är både enklare och svårare än vad det först kan verka. Vi nämner några olika modeller för trådhantering och kommer in på att de verktyg man har inte bara påverkar hur man hanterar flera saker samtidigt utan också när och om det över huvud taget passar att göra det.
Avsnittet sponsras av Procera, som bland annat söker skarpa webbapplikationsutvecklare.
Diskutera gärna avsnittet på Techworld
Länkar
- Tråd - en fristående sekvens programinstruktioner
- Parallellprogrammering - när flera instruktioner utförs samtidigt
- Flerkärninga processorer - i grund och botten flera processorer förpackade i ett paket
- Asynkron IO - in- och utmatning som låter annat arbete pågå samtidigt som in- och utmatningen
- Select-loop -
- Intels core-processorer
- The free lunch is over - artikel från 2004 som hävdar att utvecklingen tvingar oss att på allvar lära oss programmera och tänka i samtidiga processer. Gratislunchen tidigare var att man kunde förlita sig på att datorernas utveckling automatiskt skulle göra ens program snabbare över tiden
- Playstation 3-arkitekturen
- Xbox 360-arkitekturen
- Playstation 2-arkitekturen var speciell men inte multitrådad eller flerkärnig på något klassiskt sätt
- Moores lag - tumegeln att antalet transistorer i integrerade kretsar (oftast använt med avseende på processorer) ungefär fördubblas vartannat år
- Erlang - språk utvecklat av Ericsson för att skapa distribuerade och feltoleranta system. Stödjer även att uppgradera eller byta ut kod utan att stoppa systemet
- Fork - anrop som skapar en fristående kopia av en process
- Unix socket - ett sätt för processer på samma operativsystem att utbyta data
- Multitrådning i Java
- POSIX-tråd-API:et
- C++ 11 och trådar
- Minnesbarriärer (memory barriers) tvingar kod att köras i en viss ordning
- Meddelandekö
- Synkronisering
- Lås
- Trådrace
- Stack trace
- Kostnader i att växla tråd
- Avsnittet om uppdatering av Plex
- SHA1-hash
- Trådpool
- Oföränderlig data - data som inte kan förändras efter att den skapats
- BSD - familj av Unix-lika operativsystem
- JVM - Javas virtuella maskin
- Vi snackade nyss om att det är arbetstagarens marknad för utvecklare just nu
- Procera networks - veckans sponsor
- Procera söker webbapplikationsutvecklare, bland annat
- Ember
- Backbone
- Node
- Grand central dispatch - applelösning för att förbättra och förenkla hantering av trådar och samtidighet
- Reference counting
- libdispatch - biblioteket på vilket Grand central dispatch bygger
- Block i C
- Anonym funktion
- Go
- Goroutin
- Kanal - kommunikationsväg mellan goroutines
- Transaktionellt minne
- Clojure
- Communicating sequential processes
- IPV6 - senaste versionen av internetprotokollet
- OpenMP - API för multiprocesshantering med delat minne på många olika plattformar
- Fortran
- Erlangs processmodell
- Futures
- Std::future i C++ 11
- Std::promise
- Task-klassen i .net
- Node.js
- Scheme
- Continuation-passing style
- pthread_create
- Manuell minneshantering
- Trådhantering i Python
- Trådhantering i Ruby
- Trådhantering i Perl
- Pypy
- Multiprocessingpaketet för Python
- Map-funktion - funktion som tillämpar en funktion på alla element i en lista och returnerar en lista med resultat
Titlar
- Den som ändå hade email att oroa sig för
- Någonting stora avancerade datorkluster hållit på med
- Allvar i spelvärlden
- Dokumentationen var på japanska
- Gränsen då alla måste börja tråda
- Där multitrådning startade
- Kräma ur varenda sista bit
- Upplagt för katastrof
- När jag forkade första gången
- En kopia av det du har med dig in i forken
- Vaga förhoppningar om att det beter sig som det ska
- En hel del saker som gör dem väldigt irriterande att jobba med
- Nu tar jag låset
- En tråd är körd
- Först gör jag såhär och sedan gör jag såhär
- Man bara vill att saker ska gå snabbare
- Vem som äger vad
- Spinna iväg en tråd och sedan glömma bort den
- Dyra forks men billiga trådar
- Nästan litegrann som en tråd och nästan litegrann som en fork
- Inte riktigt en tråd, inte riktigt en egen process
- Tänka väldigt långt och hårt och länge
- Det är inte ens säkert att det är ditt fel
- Debugga en svart låda
- Direkt ändra i varandras primitiver
- Ju fler lås du använder desto sämre är ditt liv
- Det ser ut som ett tråd-API
- De fyra trådarna i poolen
- Nya processer i poolen
- Så snart man vill in bakom kulissen och kika
- Mer abstraktion betyder mer problem när man har problem