自己创建线程

时间:2014-04-24 15:25:41

标签: c posix

我被要求编写一个系统调用,它在调用线程的上下文中创建线程,它们共享相同的虚拟空间。函数头应为:

thread_create( void*(*start_func)() ,void* stack, unit stack_size );

我不知道如何使用第二个线程的标头中指定的堆栈。我确定它与函数的虚拟内存共享要求有关。

请给我一个明确而明确的解释,因为我很新。我正在使用POSIX API。

2 个答案:

答案 0 :(得分:2)

虽然线程可能共享很多东西,但他们无法分享的一件事就是它们的堆栈空间。一般来说(不是任何特定的OS实现),你可能malloc()新线程将使用的一些内存作为它的堆栈,然后让新线程知道它为其堆栈分配了多少内存stack_size参数。

答案 1 :(得分:0)

要使用POSIX API实现此功能,请参阅pthread_attr_setstackpthread_create API调用。这将在POSIX API之上实现,而不是作为系统调用。