gpt4 book ai didi

c - C下实现多线程应用

转载 作者:太空狗 更新时间:2023-10-29 11:34:29 24 4
gpt4 key购买 nike

我正在实现一个像 MySQL 这样的小型数据库。它是一个更大项目的一部分。

现在我已经设计了核心数据库,我的意思是我已经实现了一个解析器,我现在可以在我的数据库上执行一些基本的 sql 查询。它可以存储、更新、删除和检索文件中的数据。作为现在很好..但是我想在网络上实现它..

我希望不止一个用户能够访问我的数据库服务器并同时对其执行查询...我在 Linux 下工作,所以现在不存在可移植性问题..

我知道我需要使用套接字,这很好。我也知道我需要使用像线程池这样的概念,我需要在其中创建最大数量的线程,然后为每个客户端请求唤醒一个线程并将其分配给客户端..

至于现在我无法弄清楚所有这些实际上是如何捆绑在一起的。我应该在哪里实现多线程......在客户端/服务器端。?我的解析器将如何配置为分别从每个客户端获取输入?(我认为主要是通过文件?)

如果有人知道我如何实现这个请告诉我因为我被困在这个项目中...

谢谢.. :)

最佳答案

如果您还没有,请查看 Beej's Guide to Network Programming在一些套接字编程中亲自动手。

接下来我会拿他的 example of a stream client and server并将其用作单线程查询系统。了解了这一点后,您需要选择是要实际使用线程还是使用 select()。我的直觉告诉你,你的磁盘数据库还不支持并行写入(可能是读取),所以对于初学者来说,单个服务器线程服务请求可能是你最好的选择!

在多客户端模型中,您可以使用一个简单的每个套接字的客户端信息哈希表,并在您处理他们的查询时立即返回任何结果。一旦你开始使用网络和数据库查询进行线程化,它就会变得非常复杂。因此,从单个客户端开始,为多个客户端添加轮询,然后开始阅读和处理线程化(可能使用 pthreads )客户端-服务器模型。

关于c - C下实现多线程应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5473572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com