[uClinux-dev] Threading and synchronization questions
tringi at mx-3.cz
Thu Feb 26 21:03:09 EST 2009
I am pretty excited to be able start programming microcontrollers running
uClinux, but as a Windows programmer you can imagine my confusion and
surprise that some things that work completely differently. I have already
googled some and did my research, so I am mostly looking for confirmation
(or rejection) of my following thoughts:
1) If properly synchronized I can access data of other processes.
2) Is atomic write to a pipes up to PIPE_BUF guaranteed on uClinux?
3) There is no practical distinction between process and thread in uClinux
as there is in Windows world.
4) Can pthread mutexes be used across vfork/exec sub-processes?
In documentation to pthreads they say that the pthread_mutex can be used to
synchronize threads but not processes. But I see no difference between
thread and process in uClinux. What am I missing?
5) There is no dynamicaly-loaded-library (DLL, or .so, or whatever) support.
6) Vfork does not copy any data/code from the old process to the new one, or
does it? The real question is, will some pointer carried to the new process
always point to a data in the old process.
7) For data variety, I decided to use a SQLite database. In my current
design, there will be more separate processes running and using the
database. But the footprint of the SQLite is relatively large. Provided that
my code will comply to the threading limitations documented by SQLite, can I
have it loaded just in single core process, and accessed by other processes?
SQLite uses pthreads for synchronization.
8) If pthread_mutex cannot be used across processes, is there an
9) Or is my approach of multiple processes otherwise flawed? My intension is
to minimize memory and disk footprint by including only components necessary
for particular application. Have I other option than to write big monolithic
Thank you a lot in advance,
Jan Ringoš, jan at ringos.cz
More information about the uClinux-dev