Sponsored Content
Top Forums UNIX for Dummies Questions & Answers Open-source projects to learn concurrency-managed network programming in Unix? Post 302686981 by TheTaoOfPhil on Wednesday 15th of August 2012 07:33:07 PM
Old 08-15-2012
Open-source projects to learn concurrency-managed network programming in Unix?

Hi,

I am a mid-career programmer with extensive experience in object-oriented design and development in C, C++, and C#. I've written a number of multi-threaded server applications and background services, although my grasp of networking protocols is a bit weak: my current job drifted away from the promise of true infrastructure work and into application development. That, along with the C#/.NET technology stack, has made me a bit dull.

I am ready for a change.

I am about 1/3 the way through APUE and am hooked. Unix really appeals to me. I plan to continue on to the Steven's network programming volumes. I am of course coding up my own exercises as I go through the material.

My ideal job would be something along the lines of a recent (admittedly vague) job posting that describes woking on "a highly flexible/scalable framework to provide services to various end user applications," requiring "proficiency in building network protocol frameworks and thorough knowledge of inter-process communication, multithreading and thread synchronization."

Ideally I would find an employer who can leverage my Windows experience while also giving me exposure to this kind of work in Unix. But most employers these days don't want to have to make that kind of investment in their employees.

So I am considering finding an open source project where I could both make a contribution and acquire these skills. The ideal project would be in C or C++: several traumatic experiences with memory leaks in C# and the CLR have given me a strong yearning for reclaiming control of allocation.

There are a number of good open-source projects out there, but many of them are either done (e.g., OpenLDAP) or being done in Java (e.g., HDFS). Can anyone recommend any active open-source projects for this purpose?

Or do you have any other ideas about making this kind of career transition?

Many thanks for your help!
 

4 More Discussions You Might Find Interesting

1. Programming

Want To Learn Network Programming

I want to learn Network Programming with C,but I don't know how to start. Thank you. (2 Replies)
Discussion started by: hubin330
2 Replies

2. UNIX for Dummies Questions & Answers

How does unix system administration, unix programming, unix network programming differ?

How does unix system administration, unix programming, unix network programming differ? Please help. (0 Replies)
Discussion started by: thulasidharan2k
0 Replies

3. Shell Programming and Scripting

Best way to learn UNIX and shell Programming

Guys, What do you think is the best way to learn UNIX and shell scripting? ** I keep on searching tutorials online, where I loose most of my time :( Let me know the way you learnt the UNIX concepts, your replies might help me learn more. Thanks a ton:b: (2 Replies)
Discussion started by: dnam9917
2 Replies

4. UNIX for Beginners Questions & Answers

Wanna learn native GUI programming in UNIX - Linux ?

Hi , wanna learn native GUI programming in Unix-Linux instead of Gtk and Qt. No problem. You don't need a cross platform Gui toolkit like Gtk and Qt. And the code and syntax is also not more or less than others. Check out this code for a simple mainwindow for your application that is openend in... (0 Replies)
Discussion started by: Sennenmut
0 Replies
Gearman::Worker(3pm)					User Contributed Perl Documentation				      Gearman::Worker(3pm)

NAME
Gearman::Worker - Worker for gearman distributed job system SYNOPSIS
use Gearman::Worker; my $worker = Gearman::Worker->new; $worker->job_servers('127.0.0.1'); $worker->register_function($funcname => $subref); $worker->work while 1; DESCRIPTION
Gearman::Worker is a worker class for the Gearman distributed job system, providing a framework for receiving and serving jobs from a Gearman server. Callers instantiate a Gearman::Worker object, register a list of functions and capabilities that they can handle, then enter an event loop, waiting for the server to send jobs. The worker can send a return value back to the server, which then gets sent back to the client that requested the job; or it can simply execute silently. USAGE
Gearman::Worker->new(%options) Creates a new Gearman::Worker object, and returns the object. If %options is provided, initializes the new worker object with the settings in %options, which can contain: o job_servers Calls job_servers (see below) to initialize the list of job servers. It will be ignored if this worker is running as a child process of a gearman server. o prefix Calls prefix (see below) to set the prefix / namespace. $worker->job_servers(@servers) Initializes the worker $worker with the list of job servers in @servers. @servers should contain a list of IP addresses, with optional port numbers. For example: $worker->job_servers('127.0.0.1', '192.168.1.100:7003'); If the port number is not provided, 7003 is used as the default. Calling this method will do nothing in a worker that is running as a child process of a gearman server. $worker->register_function($funcname, $subref) $worker->register_function($funcname, $timeout, $subref) Registers the function $funcname as being provided by the worker $worker, and advertises these capabilities to all of the job servers defined in this worker. $subref must be a subroutine reference that will be invoked when the worker receives a request for this function. It will be passed a Gearman::Job object representing the job that has been received by the worker. $timeout is an optional parameter specifying how long the jobserver will wait for your subroutine to give an answer. Exceeding this time will result in the jobserver reassigning the task and ignoring your result. This prevents a gimpy worker from ruining the 'user experience' in many situations. The subroutine reference can return a return value, which will be sent back to the job server. $client->prefix($prefix) Sets the namespace / prefix for the function names. This is useful for sharing job servers between different applications or different instances of the same application (different development sandboxes for example). The namespace is currently implemented as a simple tab separated concatentation of the prefix and the function name. Gearman::Job->arg Returns the scalar argument that the client sent to the job server. Gearman::Job->set_status($numerator, $denominator) Updates the status of the job (most likely, a long-running job) and sends it back to the job server. $numerator and $denominator should represent the percentage completion of the job. Gearman::Job->work(%opts) Do one job and returns (no value returned). You can pass "on_start" "on_complete" and "on_fail" callbacks in %opts. WORKERS AS CHILD PROCESSES
Gearman workers can be run run as child processes of a parent process which embeds Gearman::Server. When such a parent process fork/execs a worker, it sets the environment variable GEARMAN_WORKER_USE_STDIO to true before launching the worker. If this variable is set to true, then the jobservers function and option for new() are ignored and the unix socket bound to STDIN/OUT are used instead as the IO path to the gearman server. EXAMPLES
Summation This is an example worker that receives a request to sum up a list of integers. use Gearman::Worker; use Storable qw( thaw ); use List::Util qw( sum ); my $worker = Gearman::Worker->new; $worker->job_servers('127.0.0.1'); $worker->register_function(sum => sub { sum @{ thaw($_[0]->arg) } }); $worker->work while 1; See the Gearman::Client documentation for a sample client sending the sum job. perl v5.10.1 2009-10-05 Gearman::Worker(3pm)
All times are GMT -4. The time now is 06:51 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy