我正在查看pthread_create手册页。
int pthread_create(pthread_t *restrict thread,
const pthread_attr_t *restrict attr,
void *(*start_routine)(void*), void *restrict arg);
此功能签名中'restrict'的含义是什么?它的目的是什么?
答案 0 :(得分:1)
restrict
向调用者提出一个要求,即此函数的指针参数不能为别名。也就是说,指针不能指向同一个对象。
虽然这对于pthread_create
显而易见,但对于像memcpy
这样的函数来说更为重要。
void * memcpy(void *restrict s1, const void *restrict s2, size_t n);
memcpy
要求输入缓冲区不重叠。它通常实现为简单的前向或后向迭代循环,因此如果缓冲区 重叠,它可能最终复制已经复制的数据。
答案 1 :(得分:0)
This几乎可以回答你的问题。
它基本上告诉编译器只有这个指针或从它派生的指针(指针+ 1)才能访问指针指向的内容。