Yes, definitely.
Unix/Linux .so shared libraries don't have a DllMain() or any other notion of "state" - so there's no problem whatsoever.
Windows .dll shared libraries have some issues, but generally threading isn't any more or less an issue with .dll-based code than any other code, even on Windows.
Here are a couple of worthwhile links on Linux shared libraries:
http://yolinux.com/TUTORIALS/Library...ndDynamic.html
http://www.tldp.org/HOWTO/Program-Library-HOWTO/
'Hope that helps .. PSM
PS:
"Creating threads inside a shared library" probably isn't the best way to think about it. Basically, "it's just code" - you have exactly the same concurrency and data protection issues regardless of whether the linkage is from a .o object, a .a static library, or dynamically loaded at runtime from a .so. This is particularly true for Linux, and it's "mostly true" for Windows.