Re: Multithreaded application freezing





Den 2015-02-03 16:23, Emmanuele Bassi skrev:
hi;

On 2 February 2015 at 22:07, G Hasse <gorhas raditex nu> wrote:
Den 2015-02-02 22:57, Gulshan Singh skrev:

I strongly advice designing an application in this way.  Every window in an
application should be a separate process. Between processes you should
find a good protocol. This protocol should be transported over some message
buss. (example: www.spread.org)

there are loads of issues with a design like that.

you're going to overengineer your application, and then have issues
whenever you have to context switch between processes because you
moved from a window to another one inside your own application.

Noop! Absolutly not! This is basic and good design. You should *separate* your
data and the program that manipulate the data. The design pattern is called
model-view-control and is well understood today. You should have a good *protocol* to
manipulate your data. The userinterface is just a way to fire of a specific "command".
 
you'll have to ensure all your shared data structures are copied
correctly across process boundaries, and you'll have to have proper
bookkeeping to ensure processes do not end up using old data.

NOOP! The data should *not* be copied! You should have your data *separate* from
the manipulating program. Ever heard of the concept of a database? (The protocol here
is SQL).

you won't be able to fork() and build your UI in a child: that's not
how X11 (or any other windowing system, really) works. you'll need to
spawn a new child process from a server.

Absolutly no problem. You have a missconception of what a "server is". Any
program that listen on sockets is a server. Every GUI-program is a server. It
listen on mouse-move, key-bord-press and it is easy to have it also listen
on event on sockets.

http://youtu.be/Vrz8ilwnBJY

In this application the datastore is xml (the application is using librsvg for rendering).
So I can manipulat the picture with simple xml "update" commands. And the library can
rerender the data. 


it's not that you cannot do it. it's that you're overcomplicating any
design in a way that rapidly explodes the maintainership overhead of
your project.

It is exaclty the other way around! Design a good datastore and a manipulating
protocol and you can write any kind of GUI or command line tool to manipulating
it.

ciao,
 Emmanuele.


-- 
Göran Hasse
Raditex Control AB
OrgNr: 556611-8773
email: gorhas raditex nu
tel: 019-450105
mob: 070-5530148


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]