本篇内容介绍了“nginx线程池源码是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 1.任务节点 handler为函数指针,是实际的任务函数,argv为该函数的参数,next指向下一个任务。 2.任务队列 head为任务队列头指针,tail为任务队列尾指针,maxtasknum为队列最大任务数限制,curtasknum为队列当前任务数。 3.线程池 mutex为互斥锁 cond为条件锁。mutex和cond共同保证线程池任务的互斥领取或者添加。 tasks指向任务队列。 threadnum为线程池的线程数 thread_stack_size为线程堆栈大小 4.启动配置 启动配置结构体是初始化线程池时的一些参数。 5.初始化线程池 首先检查参数是否合法,然后初始化mutex,cond,key(pthread_key_t)。key用来读写线程全局变量,此全局变量控制线程是否退出。 最后创建线程。 6.添加任务 首先申请一个任务节点,实例化后将节点加入任务队列,并将当前任务队列数++并通知其他进程有新任务 香港云主机。整个过程加锁。 7.销毁线程池 销毁线程池其实也是向任务队列添加任务,只不过添加的任务是让线程退出。z_threadpool_exit_cb函数会将lock置0后退出线程,lock为0表示此线程 已经退出,接着退出下一个线程。退出完线程释放所有资源。 8.增加一个线程 很简单,再生成一个线程以及线程数++即可。加锁。 9.改变任务队列最大任务限制 当num=0时设置线程数为无限大。 10.使用示例“nginx线程池源码是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注开发云网站,小编将为大家输出更多高质量的实用文章!
这篇文章主要讲解了“js作用域链中的对象访问顺序是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“js作用域链中的对象访问顺序是什么”吧!1、访问第一个对象是当前作用域对象,下一个对象来自外部环境,即父作用域…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。