swoole協(xié)程是屬于進(jìn)程還是線程

swoole協(xié)程是屬于線程的。協(xié)程是在線程里執(zhí)行的,協(xié)程是輕量級(jí)線程,Swoole的協(xié)程在底層實(shí)現(xiàn)上是單線程的,同一時(shí)間只有一個(gè)協(xié)程在工作,而線程會(huì)被操作系統(tǒng)調(diào)度到多個(gè)CPU并行執(zhí)行。

swoole協(xié)程是屬于進(jìn)程還是線程

本教程操作環(huán)境:Windows10系統(tǒng)、Swoole4版、DELL G3電腦

swoole協(xié)程是屬于進(jìn)程還是線程

什么是進(jìn)程?

進(jìn)程是系統(tǒng)中正在運(yùn)行的一個(gè)程序,程序一旦運(yùn)行就是進(jìn)程。

進(jìn)程可以看成程序執(zhí)行的一個(gè)實(shí)例。

Tags:一個(gè)進(jìn)程無法訪問另一個(gè)進(jìn)程的變量和數(shù)據(jù)結(jié)構(gòu),如果想讓一個(gè)進(jìn)程訪問另一個(gè)進(jìn)程的資源,需要使用進(jìn)程間通信,比如管道,文件,套接字等。

什么是線程?

線程屬于進(jìn)程,是程序的執(zhí)行者。

一個(gè)進(jìn)程至少包含一個(gè)主線程,也可以有更多的子線程,每個(gè)線程使用其所屬進(jìn)程的空間。

線程是進(jìn)程的一個(gè)實(shí)體,是進(jìn)程的一條執(zhí)行路徑。

Tags:同一進(jìn)程內(nèi)的多個(gè)線程會(huì)共享部分狀態(tài),多個(gè)線程可以讀寫同一塊內(nèi)存。

什么是協(xié)程?

協(xié)程比較抽象?它是程序內(nèi)部的一定調(diào)度機(jī)制;

協(xié)程是輕量級(jí)線程,?協(xié)程的創(chuàng)建、切換、掛起、銷毀全部為內(nèi)存操作,消耗是非常低的。

協(xié)程是屬于線程,協(xié)程是在線程里執(zhí)行的。

協(xié)程的調(diào)度是用戶手動(dòng)切換的,所以又叫用戶空間線程。

協(xié)程的調(diào)度策略是:協(xié)作式調(diào)度。

協(xié)程與線程區(qū)別:

Swoole的協(xié)程在底層實(shí)現(xiàn)上是單線程的,因此同一時(shí)間只有一個(gè)協(xié)程在工作,協(xié)程的執(zhí)行是串行的。這與線程不同,多個(gè)線程會(huì)被操作系統(tǒng)調(diào)度到多個(gè)CPU并行執(zhí)行。

一個(gè)協(xié)程正在運(yùn)行時(shí),其他協(xié)程會(huì)停止工作。當(dāng)前協(xié)程執(zhí)行阻塞IO操作時(shí)會(huì)掛起,底層調(diào)度器會(huì)進(jìn)入事件循環(huán)。當(dāng)有IO完成事件時(shí),底層調(diào)度器恢復(fù)事件對(duì)應(yīng)的協(xié)程的執(zhí)行。

對(duì)CPU多核的利用,仍然依賴于Swoole引擎的多進(jìn)程機(jī)制。

協(xié)程的適用場(chǎng)景:

并發(fā)服務(wù),如秒殺系統(tǒng)、高性能API接口rpc服務(wù)器,使用協(xié)程模式,服務(wù)的容錯(cuò)率會(huì)大大增加,某些接口出現(xiàn)故障時(shí),不會(huì)導(dǎo)致整個(gè)服務(wù)崩潰。

??爬蟲,可實(shí)現(xiàn)非常巨大的并發(fā)能力,即使是非常慢速的網(wǎng)絡(luò)環(huán)境,也可以高效地利用帶寬。

??即時(shí)通信服務(wù),如IM聊天、游戲服務(wù)器、物聯(lián)網(wǎng)、消息服務(wù)器等等,可以確保消息通信完全無阻塞,每個(gè)消息包均可即時(shí)地被處理。

推薦學(xué)習(xí): swoole教程

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊15 分享