当在一个应用程序试图通过连接到服务器上某处托管的php脚本登录时,应用程序停止响应,这是预期的,但如果连接或来自php脚本的响应有一些延迟,等待时间太长,看起来应用程序已挂起,我们不希望用户思考。
为此目的创建一个新线程是个好主意,只需禁用主应用程序上的控件直到收到响应?
我正在使用C ++和纯Winapi以及libCurl和oop。
答案 0 :(得分:2)
你永远不应该(主要是)在你的主(GUI?) - 线程中做(可能)时间密集的任务。连接服务器就是这样。您可能会通过使用异步IO(例如回调或非阻塞套接字)绕过它,但这些解决方案也只是为您生成另一个线程。 在另一个线程中进行连接并在连接时禁用控件,但告诉用户程序正在执行某些操作(例如通过旋转的圆圈或其他东西)。当程序似乎无能为力时,用户讨厌它。
答案 1 :(得分:2)
libcurl多接口具有异步工作的能力,因此在获得结果之前,您必须调用curl_multi_perform()函数而不是单独的线程。它可能看起来很奇怪,但每次你可以避免在你的应用程序中使用线程,你就赢了。线程==错误,有一天会发生,所以如果可能的话避免它们。这是一些basic example