I really do not recommend attempting to port programs that use pthreads to use cthreads directly instead. Some programs use thread support only in simple ways; often such programs have a simple portability layer of their own that can use pthreads or various other things, and programs whose use of thread support is already portable to disparate systems are reasonably likely to use only the simple features. In those cases it may be easy to port to cthreads.
But in the general case, it is reasonable nowadays for programs to be written to the 1003.1-1996 pthreads interface and expect that to be portable. Unfortunately, cthreads just lacks a great deal of the functionality of pthreads. Some operations do have Hurd-specific equivalents, but many do not; moreover, the Hurd additions to cthreads that do exist are not very well-specified, and the details of behavior differ subtly from pthreads. In short, I do not suggest using these interfaces, or cthreads particularly at all, outside of the Hurd's own source code. (Naturally, if you really know what you are doing and a cthreads port works in your case, then go ahead. But if you are going to be looking here for guidance on the details, then the advice from here is just to avoid it.)

