[英]Which Way of Communication is More Efficient
服務器(LINUX)中正在運行兩個進程,它們是PHPApp和C ++ App。 PHPApp由PHP編寫,而C ++ App由C ++編寫。
現在他們需要相互通信才能執行以下任務:PHPApp向C ++ App發送請求,當C ++ App收到請求時,它將從共享內存中讀取數據並進行一些計算,最后將數據返回給PHPApp。
上面有兩種方法可以執行:
我想知道哪種方法更有效?
更新
PHPApp是基於Apache的服務器軟件的一部分,因此可能有數百個PHPApp進程向C ++ App發送請求。 PHPApp並行發出請求。
這完全取決於您要執行的操作。 如果C ++ App像函數一樣工作,因此輸入-> C ++ App->輸出並且不經常被調用,那么僅調用exec並生成它就很有意義。
另一方面,如果C ++ App必須每分鍾同時並行處理大量請求,則將其構建為可以異步處理所有請求的守護程序更為有意義。 (boost :: asio可以在這里為您提供幫助)
為什么? 因為a)通過套接字進行通信比每次生成一個新進程都便宜,並且b)因為可以說您有10,000個並發請求,所以exec方法將生成10,000次C ++ App。 您可以想象,這最終可能會耗盡您的所有記憶。 在守護程序方法中,您只有10,000個套接字連接,boost :: asio可以毫無問題地進行處理。
但是要小心,異步方法肯定需要良好的工程設計。 您需要以某種方式編寫它,以使任何請求都不會阻塞另一個請求,這可能會非常困難。 所以我也會考慮這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.