c - 在 C 中,多线程,多个窗口调用一个窗口过程,每次调用都会使用新的局部变量还是我需要互斥体?

标签 c windows multithreading user-interface

我试图在标题中解释这一切:我有一个多线程 C 程序,它将有多个窗口调用一个窗口过程。

在窗口过程中完成了一些处理。我是否需要保护它,或者每次调用窗口过程都会在内存中分开?

我的直觉是我不需要互斥锁,因为它们都是局部变量,这是错误的吗?

LRESULT APIENTRY EditSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 
{   
    if (uMsg == WM_GETDLGCODE) 
        return DLGC_WANTALLKEYS;
    else if(uMsg == WM_CHAR)
    {
        if( (int) wParam == 13)
        {
            char* strCurrentCommand;

            unsigned long ulThisConversation = GetConversation(0, 0, hwnd, 0, 0);
            ...

我关心局部变量 strCurrentCommand 和 ulThisConversation。

最佳答案

函数的局部变量和参数进入堆栈。每个线程都有自己的堆栈,函数的每次调用都会在其运行的线程的堆栈上为其参数和局部变量获取一个空间。所以你很好。

关于c - 在 C 中,多线程,多个窗口调用一个窗口过程,每次调用都会使用新的局部变量还是我需要互斥体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10344432/

相关文章:

java - java中的自定义线程池实现

c - 如何计算 pthread 矩阵乘法程序的运行时间?

关闭标准输入

c - 如果设置了任何 POLLERR、POLLHUP 或 POLLNVAL revents,poll 是否会返回 -1?

c - 如何检查 Windows 程序的 C++ 文件是否存在?

c++ - 当其他线程正在等待读取时,写入串行端口将永远阻塞

c - 尝试创建简单的 C 程序来编辑文本文件中的 1 行

c++ - 什么是 StringCbprintf,它与一般的 sprintf 有何不同?

windows - 适用于 Windows 的 Docker 'Logon Failure'

c++ - 如何同时从多个线程访问 MySQL