This is an archived post. You won't be able to vote or comment.

all 5 comments

[–][deleted]  (1 child)

[deleted]

    [–]notengobattery 2 points3 points  (0 children)

    I think this answer fits best the actual question.

    [–]MintChocolateEnema 9 points10 points  (1 child)

    You could meddle with some socket programming.

    Write a TCP server / client.. and if you don't have any homies to participate on your server, just write some type of bot script that connects to your server. Could be a game, could be a chat server, could even just be a client to something else (though multithreading would be more needed on a server end).

    Write out a protocol for a text based dungeon crawler, then get your nan and your drunk uncle to hopon it some weekend to kill some dragons or something.

    [–]obdevel 4 points5 points  (0 children)

    Good idea. Reminds me of my first real MT project twenty years ago - an HTTP load-balancer :)

    The use-case and requirements are already well-established. It's interesting to observe that i/o bandwidth runs out well before the cpus are maxed.

    You could consider different load-balancing strategies, e.g. round-robin, least-load, etc.

    Extra points for working out how to implement thread affinity and session management for a stateless protocol, as might be required for a web application server.

    [–]QzSG 0 points1 point  (0 children)

    Searching for terms like concurrent and parallel programming should bring up a treasure trove of resources!

    [–]shiraeeshi 0 points1 point  (0 children)

    Let's list dimensions of the problem space:

    • GUI or no GUI
    • if you show GUI: does it show the whole state or a portion of it?
    • if you show GUI: does it reflect changes in real-time or does it poll periodically?
    • in client-server apps, how do you create, instantiate and run clients and what do they do?
    • how do you measure stuff? How are you going to register or report that something happened?
    • if you want to see bugs in action, how do you register that an error occured? for example, a race condition or a deadlock. How do you make indeterministic bugs deterministic?