c语言编写服务器的优点,用C语言编写的服务器中记录效率最高的文件是什么?...
生活随笔
收集整理的這篇文章主要介紹了
c语言编写服务器的优点,用C语言编写的服务器中记录效率最高的文件是什么?...
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
使用線程通常是一個很好的解決方案,我們通過它有趣的結果。
需要記錄的主線程準備日志字符串并將其傳遞給第二個線程。為了提供第二個線程,我們使用無鎖隊列+循環(huán)內(nèi)存來盡量減少alloc/free和等待時間。
secon線程等待無鎖隊列可用。當它發(fā)現(xiàn)需要做一些工作時,無鎖隊列的一個新槽被消耗并記錄數(shù)據(jù)。
使用單獨的線程可以節(jié)省大量時間。
當我們決定使用secon線程后,我們不得不面對另一個問題。同一個程序(一個全文serach引擎)的許多事件必須全部記錄在同一個文件中,以便在服務器的每個實例之間定期共享資源。
我們可以決定使用一個信號量或另一個syncornizing方法,但我們發(fā)現(xiàn)了另一個解決方案:第二個線程發(fā)送一個UDP數(shù)據(jù)包到本地日志服務器,該服務器偵聽已知端口。該服務器讀取每條消息并將其記錄在文件上(服務器實際上是寫入文件時唯一擁有該文件的服務器)。 UDP套接字本身授予日志的序列化。
我一直在使用這個解決方案超過10年,并且從未松動我的日志文件的單行,使用第二個線程我也為每個操作節(jié)省了大量的時間(我們用來記錄大量的服務器接收到的任何單個命令的信息)。
HTH
總結
以上是生活随笔為你收集整理的c语言编写服务器的优点,用C语言编写的服务器中记录效率最高的文件是什么?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 空调的外机需要加润滑油保养吗?
- 下一篇: 如何看dha的配料表好坏?