gpt4 book ai didi

php - 在 PHP 中,sleep(0) 是否仍然产生或被忽略?

转载 作者:行者123 更新时间:2023-12-05 07:27:50 24 4
gpt4 key购买 nike

在 PHP 中,如果您使用 sleep(0);,它会被忽略(由 PHP 或操作系统),还是会暂时让另一个线程执行?它会产生任何开销吗?它取决于 PHP 或操作系统的版本吗?

最佳答案

我决定再次调查这个问题,因为有人对这个问题投了赞成票。

basic_functions.c 所示,它调用名为 php_sleep 的函数:

/* {{{ Delay for a given number of seconds */
PHP_FUNCTION(sleep)
{
zend_long num;

ZEND_PARSE_PARAMETERS_START(1, 1)
Z_PARAM_LONG(num)
ZEND_PARSE_PARAMETERS_END();

if (num < 0) {
zend_argument_value_error(1, "must be greater than or equal to 0");
RETURN_THROWS();
}

RETURN_LONG(php_sleep((unsigned int)num)); // <----- php_sleep
}
/* }}} */

php_sleepphp.h 中定义如下(除非 PHP 运行在 win32 上):

#ifndef PHP_WIN32
#define php_sleep sleep
extern char **environ;
#endif /* ifndef PHP_WIN32 */

所以它使用的是标准的 sleep,它包含在文件其他地方的 unistd.h 中,其实现可能取决于您使用的平台和风格libc 等等。我在 Internet 上看到过一些帖子声称该函数的旧版本会明确检查参数是否为 0 并提前退出,而其他人则说 sleep(0) 是协作产生线程的一种方式尽可能短的时间到操作系统。

所以经过这么长时间,令人不满意的是,答案是:视情况而定。

关于php - 在 PHP 中,sleep(0) 是否仍然产生或被忽略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53786872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com