|
Home > Archive > Unix Programming > December 2005 > Help with "Concurrent Network Server" Design
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
Help with "Concurrent Network Server" Design
|
|
| animesh@neolinuxsolutions.com 2005-12-25, 7:47 am |
| Hi All,
I have a lexical analyzer in flex/bison associated with a lot of custom
C function calls linking to external programs which uses quite a lot of
global variables and data structures. The program is quite complex and
does a lot of Natural Language Processing. The program needs to
initialize a few databases from files every time it launches and needs
to load them in the memory.
I am currently thinking of a design where I could run the program as a
"Concurrent Network Server" and connect to it each time I want to
process some text input. There are the following problems: 1. Since I
use global variables (which cannot be avoided) I need to make sure that
for each new connection, I need to initialize all these global
variables and data structures.
2. Due to the above reason I probably need a new process Image for
every new connection. I have tried using fork but sometimes the global
variables are not properly initialized. Another problem I believe is
that I would very soon finish the fork limit for the OS, since there
are hundreds of subsequent connections.
I need to know the perfect "Concurrent Network Server" design for the
above problem. I am currenlty using Debian GNU/Linux with Kernel 2.4.18
as my primary development machine (I know this is ancient, but there
are other programs which run only with GCC 2.95). I have also ported
the program and not the experimental Network code to FreeBSD
6.0-RELEASE.
I am not much of a OS and Network programming Guy, but am quite
comfortable with C Porgramming and Data Structures. I would really
appreciate if anybody could help me out.
Thanks in Advance,
Animesh
| |
| Markus Elfring 2005-12-25, 5:50 pm |
| > I am currently thinking of a design where I could run the program as a
> "Concurrent Network Server" and connect to it each time I want to
> process some text input. There are the following problems: 1. Since I
> use global variables (which cannot be avoided) I need to make sure that
> for each new connection, I need to initialize all these global
> variables and data structures.
Would you like to minimize your globals to improve your software architecture?
Are there any chances that they can be packaged into separate structures?
> I am not much of a OS and Network programming Guy, but am quite
> comfortable with C Porgramming and Data Structures. I would really
> appreciate if anybody could help me out.
Do you get useful ideas from the following information sources?
- http://en.wikipedia.org/wiki/CORBA
- http://en.wikipedia.org/wiki/Thread...uter_science%29
- http://en.wikipedia.org/wiki/SPlint
- http://www.swig.org/compare.html
Regards,
Markus
|
|
|
|
|