这可能是一个简单的查询。关于多线程程序的查询
当我们创建一个线程时,我们将(void *)t作为参数传递给一个函数PrintHello.we正在将指针threadid中的值复制到tid中,这是一个很长的变量我很迷惑参数传递。 这是一个通过引用或通过value.over所有这是正确的吗? (value *)t
。它通过了什么值?
long t;
rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t);
void *PrintHello(void *threadid)
{
long tid;
tid = (long)threadid;
请帮我避免我的困惑:(
这是正确的答案。在这种情况下,假设你只想传递32/64位标量变量,那么它是安全的。该值仅被复制,无论函数是否终止,您都可以安全地读取数据。 – minjang 2009-11-10 08:26:38