代码拉取完成,页面将自动刷新
同步操作将从 linuxmail/lib-zo 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
/*
* ================================
* eli960@qq.com
* http://linxumail.cn/
* 2020-01-02
* ================================
*/
#include "coroutine.h"
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <syscall.h>
static pid_t my_gettid(void)
{
return syscall(__NR_gettid);
}
static void *slow_action(void *arg)
{
/* 做一些不适合在协程环境做的事情:
* cpu密集型
* 无法协程化,而导致阻塞的
* 阻塞类操作
* io频繁切换, 如 操作本地数据库, sqlite3, bdb
*/
printf("my pthread:%ld\n", (long)my_gettid());
sleep(1);
return 0;
}
static void *one_coroutine(void *arg)
{
for (int i=0;i < 100; i++) {
zcoroutine_block_do(slow_action, 0);
}
return 0;
}
static void *timer_exit(void *arg)
{
sleep(100);
exit(1);
return 0;
}
int main(int argc, char **argv)
{
int i;
zcoroutine_base_init();
zvar_coroutine_block_pthread_count_limit = 3;
zvar_coroutine_fileio_use_block_pthread = 1;
for (i=0;i<10;i++) {
zcoroutine_go(one_coroutine, 0, 0);
}
zcoroutine_go(timer_exit, 0, 0);
printf("exit after 100s\n");
printf("block do running in worker pthread\n");
printf("strace -p pthrad_id\n");
zcoroutine_base_run(0);
zcoroutine_base_fini();
sleep(1);
return 0;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。