diff --git a/README.md b/README.md index 49223089eb61bd1122d891b081b8f0b015895e95..d8163e5dff3cbca13f2829bde788ea8e0581ee27 100644 --- a/README.md +++ b/README.md @@ -20,3 +20,5 @@ PHP版本:7.3.5 [7、协程创建(二)](./docs/《PHP扩展开发》-协程-协程创建(二).md) +[8、协程创建(三)](./docs/《PHP扩展开发》-协程-协程创建(三).md) + diff --git "a/docs/\343\200\212PHP\346\211\251\345\261\225\345\274\200\345\217\221\343\200\213-\345\215\217\347\250\213-\345\215\217\347\250\213\345\210\233\345\273\272\357\274\210\344\270\200\357\274\211.md" "b/docs/\343\200\212PHP\346\211\251\345\261\225\345\274\200\345\217\221\343\200\213-\345\215\217\347\250\213-\345\215\217\347\250\213\345\210\233\345\273\272\357\274\210\344\270\200\357\274\211.md" index a21ea6e93dc6ff35fc2ded99d6047fd9cfb7e19c..2bbc5903f5b48e482e40b7ad97bfecac803330a4 100644 --- "a/docs/\343\200\212PHP\346\211\251\345\261\225\345\274\200\345\217\221\343\200\213-\345\215\217\347\250\213-\345\215\217\347\250\213\345\210\233\345\273\272\357\274\210\344\270\200\357\274\211.md" +++ "b/docs/\343\200\212PHP\346\211\251\345\261\225\345\274\200\345\217\221\343\200\213-\345\215\217\347\250\213-\345\215\217\347\250\213\345\210\233\345\273\272\357\274\210\344\270\200\357\274\211.md" @@ -289,4 +289,5 @@ success! OK,到这里,我们算是完成了协程创建接口的前期工作。 -[下一篇:协程创建(二)](./《PHP扩展开发》-协程-协程创建(二).md) \ No newline at end of file +[下一篇:协程创建(二)](./《PHP扩展开发》-协程-协程创建(二).md) + diff --git "a/docs/\343\200\212PHP\346\211\251\345\261\225\345\274\200\345\217\221\343\200\213-\345\215\217\347\250\213-\345\215\217\347\250\213\345\210\233\345\273\272\357\274\210\344\270\211\357\274\211.md" "b/docs/\343\200\212PHP\346\211\251\345\261\225\345\274\200\345\217\221\343\200\213-\345\215\217\347\250\213-\345\215\217\347\250\213\345\210\233\345\273\272\357\274\210\344\270\211\357\274\211.md" new file mode 100644 index 0000000000000000000000000000000000000000..34290dfa64fdc5101d5b6cb4e4fc1370aa641937 --- /dev/null +++ "b/docs/\343\200\212PHP\346\211\251\345\261\225\345\274\200\345\217\221\343\200\213-\345\215\217\347\250\213-\345\215\217\347\250\213\345\210\233\345\273\272\357\274\210\344\270\211\357\274\211.md" @@ -0,0 +1,46 @@ +# 协程创建(三) + +[上一篇文章](./《PHP扩展开发》-协程-协程创建(二).md),我们成功的实现了**把一个用户空间的函数传递给创建协程的接口**的功能。这一篇文章,我们来介绍一下如何去调用这个用户空间的函数。 + +我们实现的接口现在变成了: + +```c++ +PHP_METHOD(study_coroutine_util, create) +{ + zend_fcall_info fci = empty_fcall_info; + zend_fcall_info_cache fcc = empty_fcall_info_cache; + zval result; + + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_FUNC(fci, fcc) + ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE); + + fci.retval = &result; + if (zend_call_function(&fci, &fcc) != SUCCESS) { + return; + } + + *return_value = result; +} +``` + +`PHP`脚本如下: + +```PHP +