小编non*_*rly的帖子

ac客户端对ac dll函数的调用是异步的吗?

我做了一个只有一个功能的简单c dll(在VS 2017中)。我从另一个C客户端程序使用此dll函数。调用是否异步(在与调用客户端程序不同的线程中运行)?如果不是,那么我需要运行异步并且如果dll函数是一个长时间的过程(或者当它想要通知事件的调用程序时),我需要从dll调用到调用(客户端)程序中的回调函数管理事件(我想使用函数指针)。

dll代码为:

#include <stdio.h>

__declspec(dllexport) void DllFunction() {
    for (long i = 1;i <= 300000;i++) {
        printf("dll\n");
    }

}
Run Code Online (Sandbox Code Playgroud)

C客户端程序是:

#include <stdio.h>
__declspec(dllimport) void DllFunction(void);

    int main() {
        DllFunction();
        for (long i = 1;i <= 300000;i++) {
            printf("client\n");
        }
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

运行以前的客户端代码,我认为两个printf命令(dll和客户端)之间没有干扰!

更新

首先要做的是...搜索之后,我意识到我们可以将回调功能与异步调用分开。我们可以有一个驻留在调用(客户端)代码中的回调函数,并从dll长时间进程中调用该回调函数,以例如在本文中很好地描述了有关进度的通知: 在DLL中使用回调

因此,它仍然是异步的第二个问题... CreateThread()函数呢。我可以使用吗?如果是,则必须在dll或客户端代码中使用?

c dll visual-studio-2017

3
推荐指数
1
解决办法
58
查看次数

标签 统计

c ×1

dll ×1

visual-studio-2017 ×1