YMMV but I found them to be pretty complex and required some in depth knowledge of both assembly and C. Implementing threads/clone at the sys call level required knowing how to set up the stack and registers for the new process. If I recall correctly there was also a hard problem about virtual memory, but this was 3 years ago.