Onko kellään kokemusta kielestä, jolla saa monta silmukkaa samaan aikaan?
Eli jotenkin näin (kömpelö esimerkki):
SuoritaMontaSilmukkaa:
Silmukka A:
pluslasku
Silmukka B:
äärimmäisen monimutkainen laskutoimitus
Lopeta SuoritaMontaSilmukkaa
Tässä tapauksessa Silmukkaa A suoritettaisiin paljon useammin kuin Silmukkaa B. Kumpikin silmukka olisi while-looppi,joita suoritetaan niin nopeasti kuin pystyy, aivan kuin kummallekin olisi oma tietokone, joka keskittyy vain yhteen silmukkaan.
Toivottavasti saatte selvää, en osaa sen paremmin selittää...
Jos on valinnanvaraa kielistä, niin seuraavat seikat olisivat plussaa:
-Samantapaisuus C:n kanssa
-Ehdot silmukoille
-Minimi/maksimi silmukan tehonkäytölle
Tuollainen hoituu threadilla esim linuxissa posix ja windowsissa create_thread api... tjtn
Java.
Alla on pieni esimerkki kahdesta luokasta, jotka toteuttavat Runnable-rajapinnan ja joita ajetaan omissa säikeissään rinnakkain. Esimerkissä säikeitä suoritetaan ikuisessa silmukassa. (Edit: korjattu hieman kuvausta).
public class ThreadDemo { public static void main(String[] args) { new Thread(new Thread1()).start(); new Thread(new Thread2()).start(); } } class Thread1 implements Runnable { public void run() { while (true) { try { Thread.sleep(1000); } catch (InterruptedException e) { } System.out.println("Thread1 suoritti silmukan loppuun"); } } } class Thread2 implements Runnable { public void run() { while (true) { try { Thread.sleep((int)(Math.random() * 100) + 20); } catch (InterruptedException e) { } System.out.println("Thread2 suoritti silmukan loppuun"); } } }
Wikipediasta voi katella: http://en.wikipedia.org/wiki/Category:
Hmm. Löysin tuolta listasta C#:n, onko sille ilmaista kääntäjää? Sehän on M$:n kehittämä eikä mikään sen tekemä ole ilmaista...
Ja noi windowsin omat thread-systeemit on varmaan liian monimutkasia mulle :(
KoodiNoppa kirjoitti:
Hmm. Löysin tuolta listasta C#:n, onko sille ilmaista kääntäjää?
Kääntäjistä ei tietoa ainakaan minun osalta, mutta IDE olis SharpDevelop.
latauslinkki: http://www.softpedia.com/get/Programming/Other-Programming-Files/SharpDevelop.shtml
Google antoi tällaisen sivun. Siellä on useita C#-kääntäjiä, mitä katsella. Ilmaisiksi väittää.
Mono olisi toki ilmainen kääntäjä. Toimii Linuxissa, Windowsissa ja Macissä.
C#:lle löytyy ihan Microsoftin omakin kehitysympäristö kääntäjineen, Visual Studio 2005 Express Edition. Minä käytän sitä ja tyytyväinen olen. Siinä ei ole mitään rajoituksia esim. projektien julkaisussa ja "exporttaamisessa".
http://msdn.microsoft.com/vstudio/express/
Ja vaikka tuosta kovasti mainostetaan että voi helposti suunnitella drag'n drop -menetelmällä ohjelmia tms niin voi siis ihan oikein koodatakin. Itse en ole itseasiassa tuolla muuta tehnyt kuin vääntänyt raakaa koodia DirectX sovelluksiin. \o/
KoodiNoppa kirjoitti:
Hmm. Löysin tuolta listasta C#:n, onko sille ilmaista kääntäjää? Sehän on M$:n kehittämä eikä mikään sen tekemä ole ilmaista...
Ai? Microsoftilta saat C, C++, C#, VB.NET jne kääntäjät ihan maksutta. Ja vielä IDEtkin löytyy ilmaiseksi. Tietysti joudut maksamaan netistä, tietokoneesta jne, että ei kai tämä kelpaa ilmaisuuden määritelmään?
Ja .NETissä BackgroundWorker on pop samanaikaisiin hommiin. Ei tarvitse itse välittää säikeistä, senkun sanoo että "ajapa tuota taustalla" ja kun on valmis, tulee viesti. Ja voit vielä tietysti väliaikatietojakin lähetellä, jos haluat.
Sitten on myös tietenkin Ada, josta löytyy rinnakkaisuuteen liittyen kaikki kellot ja pillit.
Esimerkiksi alkuperäisen kysyjän suoritusajan rajoitus silmukalle näyttää tältä:
select delay 1.0; -- Rajoitetaan do_some_work -aliohjelman then abort -- suoritusaika 1.0 sekuntiin. do_some_work; end select;
Sitten on tietysti transputereissa aikoinaan käytetty occam (nykyisin todennäköisemmin occam-2), jossa loopit saa rinnakkaiseksi seuraavasti:
PAR loop_1 loop_2
Näistä kielistä sen verran, että occam-2 on melko eksoottinen, mutta Adasta julkaistiin juuri tänä vuonna uusittu standardi ISO/IEC 8652:1995/Amd 1:2007, eli kieli elää ja kehittyy. Ja uusitun standardin myötä on taas modernein standardoitu oliokieli :)
Mono vaikuttaa ihan kivalta, kun siinä on tuki niin monelle kielelle... Jos siihen vielä tulee tuki tuolle Adalle, niin aika varma valinta.
P.S.Enpäs tiennyt että ne Microsoftin kääntäjät on ilmasia. Nyt hävettaa :o
http://www.usafa.af.mil/df/dfcs/bios/mcc_html/
Microsoftilla on kovatarve saada tuo .net tekniikka yleiseen käyttöön, kun sillä tuntuu olevan jonkinlainen halu tehdä tulevasta windowsista .netin ympärille rakennettu täysin uusi käyttis, jossa perinteiset 9x, XP ja Vista ohjelmat eivät enää toimisi ellei ne ole .net-ohjelmia tai java ohjelmia. Syy moiseen muutokseen on tietoturva. Siitä johtuu varmaankin tuo Microsoftin innostus jakaa kehitsvälineet ilmaiseksi.
Wikissä wanhaa tietoa! Uusimmasta artikkelistä tuo väite onkin poistunut.
panttu kirjoitti:
Syy moiseen muutokseen on tietoturva.
Ei kai sentään tietoturva? Enemmänkin rahastusta epäilisin, siis käytönvalvontaa.
Tietoturva siinä mielessä, että kun softat kirjotetaan managed codella (keksikää itse sopiva suomennos) C++:n sijaan, jää puskuriylivuodot tapahtumatta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.