在pthread_create中限制是什么意思

时间:2012-02-02 17:28:29

标签: c linux pthreads

我正在查看pthread_create手册页。

int pthread_create(pthread_t *restrict thread,
          const pthread_attr_t *restrict attr,
          void *(*start_routine)(void*), void *restrict arg);

此功能签名中'restrict'的含义是什么?它的目的是什么?

2 个答案:

答案 0 :(得分:1)

restrict向调用者提出一个要求,即此函数的指针参数不能为别名。也就是说,指针不能指向同一个对象。

虽然这对于pthread_create显而易见,但对于像memcpy这样的函数来说更为重要。

void * memcpy(void *restrict s1, const void *restrict s2, size_t n);

memcpy要求输入缓冲区不重叠。它通常实现为简单的前向或后向迭代循环,因此如果缓冲区 重叠,它可能最终复制已经复制的数据。

答案 1 :(得分:0)

This几乎可以回答你的问题。

它基本上告诉编译器只有这个指针或从它派生的指针(指针+ 1)才能访问指针指向的内容。