nginx线程池源码是什么


本篇内容介绍了“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作用域链中的对象访问顺序是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“js作用域链中的对象访问顺序是什么”吧!1、访问第一个对象是当前作用域对象,下一个对象来自外部环境,即父作用域…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 07/17 10:39
下一篇 07/17 10:39

相关推荐