Tietääkö joku hyvää opasta tai kirjaa säikeistämisestä?
Säikeiden realistiset sovellukset tavallisilla tietokoneilla ovat lopulta aika yksinkertaisia, joten ihmettelen, jos joku on vaivautunut tekemään niistä (paksun) kirjan. (Toisaalta onhan markkinoilla kaikenlaista alkaen Windows-tehokäyttäjän oppaasta...) Esimerkiksi Sunin Java-tutoriaalissa opetetaan tarvittava teoriakin varsin perusteellisesti. Oppaan tiedot sopivat luonnollisesti muihinkin kieliin.
Kiitän.
Metabolix kirjoitti:
Säikeiden realistiset sovellukset tavallisilla tietokoneilla ovat lopulta aika yksinkertaisia, joten ihmettelen, jos joku on vaivautunut tekemään niistä (paksun) kirjan.
Siis mikä on mielestäsi noin yksinkertaista? Rinnakkaisohjelmoinnin kanssa pitää kyllä olla tarkkana ihan yksinkertaisissakin sovelluksissa ja säikeet saa aika helposti solmuun, jos ei tiedä, mitä tekee. Kirjojakin aiheesta on kirjoitettu ihan runsaasti
http://books.google.com/books?q=thread programming
http://books.google.com/books?q=parallel programming
os kirjoitti:
Siis mikä on mielestäsi noin yksinkertaista?
Nykykielillä ja valmiilla kirjastoilla säikeet ovat minusta lähes yhtä yksinkertaisia kuin dynaaminen muistinkäyttö, vaikka virheiden seuraukset ovatkin usein dramaattisempia ja vaikeampia tulkita. Käytännössä kaikki virheet voi kuitenkin välttää tarkalla loogisella ajattelulla ja käsittelemällä odottamattomatkin tilanteet kunnialla; toisin sanoen muilta osin huolellisesti tehty ohjelma tekee myös säikeiden käytöstä paljon turvallisempaa.
Toki prosessorien ydinten määrän kasvaessa raskaat pelit ynnä muut käyttävät entistä useampaa säiettä, jotta saataisiin koneesta kaikki irti. Silloin ehkä joudutaan tekemään ratkaisuja, jotka eivät olisi yhden ytimen kohdalla lainkaan hyödyllisiä ja joissa on suurempi riski virheille. Muutenkin säikeiden tehokas käyttö on aivan oma alansa, jolla ei ole paljonkaan tekemistä sen kanssa, osaako tehdä monisäikeisen ohjelman ilman virheitä.
Ei minunkaan mielestäni säikeet ole mitenkään vaikea juttu.
Omassa käytössä säikeet on olleet hyödyllisiä ihan muista syistä kuin prosessorin monien ytimien takia. Yleensä ohjelmani ei ole laskennallisesti raskaita, joten sikäli CPU ei yleensä tule pullonkaulaksi. Sen sijaan ohjelmissa tulee usein vastaan tehtäviä, jossa ohjelma joutuu odottamaan jotakin (esim. verkossa olevaa palvelinta), jolloin tehtävän voi laittaa säikeeseen taustalle ja ohjelman käyttäjä voi jatkaa työskentelyä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.