Multithreading mit C???



  • Thx, hab schon ein paar Tutorials von diversen UNI's uaf deutsch gefunden... schauen ganz gut aus!



  • TactX schrieb:

    Es gibt boost für C? 😉

    Achja hab ich ganz überlesen. Aber wer weiß, wahrscheinlich programmiert er eh mit nem C++ Compiler und es ist wahrscheinlich eh egal, ob er nun ne C++ Lib oder ne C Lib verwendet.



  • nep schrieb:

    Boost hat doch ne Threading-Bibliothek die plattformunabhängig ist, oder täusche ich mich da jetzt? (Hab Boost bis jetzt noch (leider) nicht benutzt)

    Boost.Thread ist portierbar, aber nicht plattformunabhängig. Was ein riesen Unterschied ist.



  • nep schrieb:

    TactX schrieb:

    Es gibt boost für C? 😉

    Achja hab ich ganz überlesen. Aber wer weiß, wahrscheinlich programmiert er eh mit nem C++ Compiler und es ist wahrscheinlich eh egal, ob er nun ne C++ Lib oder ne C Lib verwendet.

    nur dass man sich mit 'boost' unmengen (etliche megabytes) an krempel installieren muss. das ist es nicht wert.
    @OP: für unix und clones (wie linux) gibbets das: http://www.llnl.gov/computing/tutorials/pthreads/



  • POSIX: nimm die funktion fork()

    Is einfach zu benutzen und übernimmt KEINEN einzigen parameter!



  • sdfds schrieb:

    POSIX: nimm die funktion fork()

    Is einfach zu benutzen und übernimmt KEINEN einzigen parameter!

    Ist also nutzlos.



  • ten schrieb:

    nep schrieb:

    TactX schrieb:

    Es gibt boost für C? 😉

    Achja hab ich ganz überlesen. Aber wer weiß, wahrscheinlich programmiert er eh mit nem C++ Compiler und es ist wahrscheinlich eh egal, ob er nun ne C++ Lib oder ne C Lib verwendet.

    nur dass man sich mit 'boost' unmengen (etliche megabytes) an krempel installieren muss. das ist es nicht wert.
    @OP: für unix und clones (wie linux) gibbets das: http://www.llnl.gov/computing/tutorials/pthreads/

    Was ist was nicht wert?
    Dass ich Tools habe die meine Arbeit ungemein erleichtern ist ein paar MB auf der Platte nicht wert?
    Lol



  • Vor ich boost nehm kann ich gleich das original nehmen - Java.



  • erkenner schrieb:

    Vor ich boost nehm kann ich gleich das original nehmen - Java.

    Muahahaha. Mehr daneben gehts wohl nicht. Muahahaha 😃



  • Apollon schrieb:

    sdfds schrieb:

    POSIX: nimm die funktion fork()

    Is einfach zu benutzen und übernimmt KEINEN einzigen parameter!

    Ist also nutzlos.



  • Plattformunabhängige ANSI C Thread Library: Protothreads



  • mastercpp schrieb:

    Plattformunabhängige ANSI C Thread Library: Protothreads

    Sind aber Userlevel Threads!



  • hustbaer schrieb:

    ten schrieb:

    nep schrieb:

    TactX schrieb:

    Es gibt boost für C? 😉

    Achja hab ich ganz überlesen. Aber wer weiß, wahrscheinlich programmiert er eh mit nem C++ Compiler und es ist wahrscheinlich eh egal, ob er nun ne C++ Lib oder ne C Lib verwendet.

    nur dass man sich mit 'boost' unmengen (etliche megabytes) an krempel installieren muss. das ist es nicht wert.
    @OP: für unix und clones (wie linux) gibbets das: http://www.llnl.gov/computing/tutorials/pthreads/

    Was ist was nicht wert?
    Dass ich Tools habe die meine Arbeit ungemein erleichtern ist ein paar MB auf der Platte nicht wert?
    Lol

    ja, um 'nur' multithreading zu machen, ist 'boost' mit kanonen auf spatzen schiessen (es müsste eher 'bloat' heissen) 😃

    rüdiger schrieb:

    mastercpp schrieb:

    Plattformunabhängige ANSI C Thread Library: Protothreads

    Sind aber Userlevel Threads!

    zum selber schedulen.
    gut z.b. wenn man kein multitasking-os hat... 🙂



  • ten schrieb:

    hustbaer schrieb:

    ten schrieb:

    nep schrieb:

    TactX schrieb:

    Es gibt boost für C? 😉

    Achja hab ich ganz überlesen. Aber wer weiß, wahrscheinlich programmiert er eh mit nem C++ Compiler und es ist wahrscheinlich eh egal, ob er nun ne C++ Lib oder ne C Lib verwendet.

    nur dass man sich mit 'boost' unmengen (etliche megabytes) an krempel installieren muss. das ist es nicht wert.
    @OP: für unix und clones (wie linux) gibbets das: http://www.llnl.gov/computing/tutorials/pthreads/

    Was ist was nicht wert?
    Dass ich Tools habe die meine Arbeit ungemein erleichtern ist ein paar MB auf der Platte nicht wert?
    Lol

    ja, um 'nur' multithreading zu machen, ist 'boost' mit kanonen auf spatzen schiessen (es müsste eher 'bloat' heissen) 😃

    Also mir geht es meistens eher darum wie einfach ich etwas programmieren kann, nicht darum wieviel Code das aus irgendwelchen Libraries mit reinzieht. Und Boost.Thread ist relativ einfach zu verwenden.
    Ich meine, das selbe was du hier über Boost sagst, kann man über so ziemlich jede grössere Library sagen wenn man bloss ein kleines Problem damit angehen will. Trotzdem nehme ich die Cryptlib her wenn ich RSA oder RC4 oder "nur" MD5 braucht - ich hab schliesslich keine Lust das Rad jedes mal neu zu erfinden...

    Oder anders gesagt: was ist schlecht daran mit Kanonen auf Spatzen zu schiessen, wenn ich sie damit viel leichter treffe als mit meiner alten Steinschleuder?



  • ja, um 'nur' multithreading zu machen, ist 'boost' mit kanonen auf spatzen schiessen (es müsste eher 'bloat' heissen)

    Wo ist'n das Problem, ins Programm wird eh nur das nötigste aufgenommen.



  • hustbaer schrieb:

    Ich meine, das selbe was du hier über Boost sagst, kann man über so ziemlich jede grössere Library sagen wenn man bloss ein kleines Problem damit angehen will.

    ja, stimmt auch. grosse libraries sind für grosse programme da 😉 aber pc-coder scheinen ja keine hemmungen zu haben ihre programme fett und schwerfällig zu machen. ich weiss noch mein erstes mfc-programm: mehrere 100kb für eine popeliges fensterchen. hat mich voll von den socken gehauen.
    oder mach mal mit mingw eine c++ konsolenanwendung, die ein paar std::strings und vectors benutzt - die wird riesig fett. ich will ja nicht gleich 'ne 3d-animation in 256 bytes packen, aber die verhältnisse müssen schon stimmen irgendwie...

    hustbaer schrieb:

    Trotzdem nehme ich die Cryptlib her wenn ich RSA oder RC4 oder "nur" MD5 braucht - ich hab schliesslich keine Lust das Rad jedes mal neu zu erfinden...

    brauchst ja nix neu erfinden. gerade für die crypto sachen gibts gut getestete referenzimplementierungen. da kann man einfach per copy+paste das nehmen, was man braucht...



  • ten schrieb:

    hustbaer schrieb:

    Ich meine, das selbe was du hier über Boost sagst, kann man über so ziemlich jede grössere Library sagen wenn man bloss ein kleines Problem damit angehen will.

    ja, stimmt auch. grosse libraries sind für grosse programme da 😉 aber pc-coder scheinen ja keine hemmungen zu haben ihre programme fett und schwerfällig zu machen. ich weiss noch mein erstes mfc-programm: mehrere 100kb für eine popeliges fensterchen. hat mich voll von den socken gehauen.
    oder mach mal mit mingw eine c++ konsolenanwendung, die ein paar std::strings und vectors benutzt - die wird riesig fett. ich will ja nicht gleich 'ne 3d-animation in 256 bytes packen, aber die verhältnisse müssen schon stimmen irgendwie...

    Naja, das kommt darauf an finde ich. Bei vielen Sachen ist die Grösse einfach nicht relevant. Dafür sind andere Dinge wie Entwicklungszeit, Wartbarkeit etc. viel wichtiger. Wenn ich in meiner Firma etwas programmiere, und da irgendwo ein paar hundert KB spare, dafür aber 2-3 Tage länger braucht, und der Code schlechter wartbar und unübersichtlicher ist ... ganz einfach weil ich irgend eine Library nicht verwendet habe weil sie ja "so unnötig gross" ist, dann werde ich dafür ganz sicher kein Lob bekommen.

    hustbaer schrieb:

    Trotzdem nehme ich die Cryptlib her wenn ich RSA oder RC4 oder "nur" MD5 braucht - ich hab schliesslich keine Lust das Rad jedes mal neu zu erfinden...

    brauchst ja nix neu erfinden. gerade für die crypto sachen gibts gut getestete referenzimplementierungen. da kann man einfach per copy+paste das nehmen, was man braucht...

    Naja, wieder: bevor ich hergehen und mir eine Referenzimplementierung suche, und die dann per copy & past in mein Programm einbaue, nehme ich lieber die Cryptlib. Das Ding ist zwar riesig, aber dafür sind da ein riesen Haufen an Algorithmen implementiert, und wenn ich eines Tages statt MD5 mal SHA nehmen will, dann ist das eine Änderung von vielleicht 2-3 Zeilen, und das Ding läuft wieder 1:1 so wie vorher. Anderenfalls müsste ich mir dann nochmal eine Referenzimplementierung für SHA raussuchen, die evtl. noch anpassen (Compiler, Parameterübergabe etc.) -- was einfach viel länger dauert.

    Aber eine ganz einfache Frage: was genau ist deiner Meinung nach der Nachteil von "zu grossen" oder "aufgeblasenen" Programmen -- bzw. der Vorteil vom kleinen Programmen? Irgendwas greifbares? Oder bloss weils deinem Sinn von Aesthetik besser entspricht?



  • hustbaer schrieb:

    Aber eine ganz einfache Frage: was genau ist deiner Meinung nach der Nachteil von "zu grossen" oder "aufgeblasenen" Programmen -- bzw. der Vorteil vom kleinen Programmen? Irgendwas greifbares? Oder bloss weils deinem Sinn von Aesthetik besser entspricht?

    erstmal das und ausserdem sind kleine programme viel 'benutzerfreundlicher'. sie starten schneller, es muss nichts installiert werden, lassen sich auf usb-stick oder sogar auf diskette kopieren und überall hin mitnehmen, einfaches updaten durch überschreiben mit einer neuen version usw...
    nichts ist schlimmer, als ein minitool, das einen installer hat der einem gleich ein paar dll's unterjubelt, oder ein .NET framework u.ä. 😡
    aber das ist natürlich meine persönliche einstellung, viele mögen das anders sehen...



  • ten schrieb:

    hustbaer schrieb:

    Aber eine ganz einfache Frage: was genau ist deiner Meinung nach der Nachteil von "zu grossen" oder "aufgeblasenen" Programmen -- bzw. der Vorteil vom kleinen Programmen? Irgendwas greifbares? Oder bloss weils deinem Sinn von Aesthetik besser entspricht?

    erstmal das und ausserdem sind kleine programme viel 'benutzerfreundlicher'. sie starten schneller, es muss nichts installiert werden, lassen sich auf usb-stick oder sogar auf diskette kopieren und überall hin mitnehmen, einfaches updaten durch überschreiben mit einer neuen version usw...
    nichts ist schlimmer, als ein minitool, das einen installer hat der einem gleich ein paar dll's unterjubelt, oder ein .NET framework u.ä. 😡
    aber das ist natürlich meine persönliche einstellung, viele mögen das anders sehen...

    Äh, sorry, aber wer spricht von Installern und Tonnenweise DLLs?
    Wenn ich an Tools wie Dependency-Walker oder ähnliches denke -- wäre mir vollkommen egal wenn das Ding statt ~640kb 3 oder 4 MB hätte, und statt der einen DLL (die bloss im selben Verzeichnis liegen braucht) deren 5 hätte. Mir vollkommen egal.

    Vonwegen schnell starten -- ich weiss nicht auf was für einem System du arbeitest, aber ich kann keinen Unterschied feststellen ob ich nun calc.exe starte (112kb) oder notepad2 (>600kb).

    Aber davon ganz abgesehen: wann spielt das wirklich eine Rolle? *wunder*

    Und weiter: was hat das alles mit Boost.Threads zu tun? Ich meine Boost.Threads ist nicht gross und braucht keinen Installer und kein .NET Framework etc.

    ----

    Vielleicht solltest du dich mal hinsetzen und ein nettes 64k Intro schreiben -- denke das wäre dein Ding 😉



  • hustbaer schrieb:

    Vielleicht solltest du dich mal hinsetzen und ein nettes 64k Intro schreiben -- denke das wäre dein Ding 😉

    dann lieber sowas: http://www.256b.com/home.php
    🙂


Anmelden zum Antworten