我正在研究一個問題,它需要在一個非常大的圖上進行BFS遍歷。假設1個頂點最多可以有2^32個邊連接到其他頂點。 我試過使用System.Collection.Queue,但我快速得到一個內存不足的例外。什麼是在c#中實現隊列的最佳方式(System.Collection.Queue有內存限制)
我也嘗試使用FileStream來實現Queue persist到文件,但它真的很慢。從支持的文件中沒有像RemoveFirstLine這樣的方法。爲了刪除第一行,我必須RealAllLine,刪除內存對象中的第一行,然後寫回文件。
我想知道是否有任何現有的第三方庫實現這樣一個隊列,而不用擔心內存。
如果不是,那麼在c#中實現它的最好方法是什麼。 什麼是最好的FileXXXX類可以做的工作。
如果阻止你這樣做的異常是'OutOfMemoryException',那麼你將無法在不使用文件系統的情況下實現這麼大的隊列。 –
如果您在應用內的任何數據結構中實現自己的隊列,則會遇到內存問題。 幾點建議:1)使用文件系統2)使用外部消息隊列,例如。 Redis,AWS SQS,RabbitMQ等 –
我確實考慮用File系統來實現這樣一個隊列,抽象接口不是太複雜。只是入隊,出隊。但是,我沒有找到正確的.net類來高效地完成它。請參閱上文。 我還沒有想過Redis,AWS SQS,RabbitMQ。我不確定在這裏是否需要異步消息隊列。 –