C++ 将异步转换为同步
我知道这可能是一个一般性的问题,但我正试图把我的头围绕在这个问题上,我不知道如何解决它 我们有一个项目,以前的sdk对它进行了同步调用,现在我们正在尝试用一个异步工作的新sdk替换该sdk 我们还使用了一个包装器作为应用程序和sdk之间的中间地带。从应用程序的角度来看,我们必须保持“sync aproach”,即它们阻塞并等待响应/数据 新的async SDK有一个主回调线程,在该线程中,我们会根据请求ID收到每个请求的通知 因此,现在我正试图找出一种对sdk进行异步调用的好方法,然后以某种方式阻止,直到某个时间到期/收到命令的结果,并将回调线程上收到的结果返回到发出请求的位置,以便将信息传递给应用程序? 另外,由于sdk不同,有时为了获得相同的数据,我们需要调用多个sdk API 如果您对如何解决该问题的具体案例有一些想法或文档,我将不胜感激 事先非常感谢 假设我们有以下代码:C++ 将异步转换为同步,c++,asynchronous,synchronization,C++,Asynchronous,Synchronization,我知道这可能是一个一般性的问题,但我正试图把我的头围绕在这个问题上,我不知道如何解决它 我们有一个项目,以前的sdk对它进行了同步调用,现在我们正在尝试用一个异步工作的新sdk替换该sdk 我们还使用了一个包装器作为应用程序和sdk之间的中间地带。从应用程序的角度来看,我们必须保持“sync aproach”,即它们阻塞并等待响应/数据 新的async SDK有一个主回调线程,在该线程中,我们会根据请求ID收到每个请求的通知 因此,现在我正试图找出一种对sdk进行异步调用的好方法,然后以某种方式
bool DeviceService::getDeviceInformation (DeviceInfo& devInfo) const
{
if(CM2MWSession::getInstance().isInit())
{
NOTIFICATION_REQUEST_DATA rqst;
rqst.sender_id = CM2MWSession::getInstance().getClientId();
get_serial_number(&rqst,NULL))
get_sim_serial_number(&rqst,NULL))
}
}
get_serial_number和get_sim_serial_number是对sdk的异步调用
getDeviceInformation是从应用程序端调用的方法
主回调如下所示:
mainCallback(REQUEST_DATA *rqst_data, uint32 size, void *data)
在这里,我们会收到每种请求类型的rqst_数据->专长id)。
从这里开始,我们必须以某种方式返回getDeviceInfo,其中包含此回调返回的数据。您应该粘贴一些正在转换的代码。在异步调用后等待
条件变量
;让回调函数通知该变量。