永发信息网

C语言互斥锁的问题

答案:2  悬赏:70  手机版
解决时间 2021-02-10 12:18
  • 提问者网友:动次大次蹦擦擦
  • 2021-02-10 04:10
#include
#include
#include
CRITICAL_SECTION cs;
static int i;
DWORD WINAPI kbinput(LPVOID pM) //把函数头换成void
{
int j=0;
for(j=0;j<20;j++){
EnterCriticalSection(&cs);
printf("%d\n",i);
i++;
LeaveCriticalSection(&cs);
}
}

DWORD WINAPI kbinput1(LPVOID pM)
{
int j=0;
for(j=0;j<20;j++){
EnterCriticalSection(&cs);
printf("%d\n",i);
i++;
i++;
LeaveCriticalSection(&cs);
}
}

int main()
{
i=0;
InitializeCriticalSection(&cs);
HANDLE handle1 = CreateThread(NULL, 0, kbinput,NULL , 0, NULL);
HANDLE handle2 = CreateThread(NULL, 0, kbinput1,NULL, 0, NULL);
Sleep(1000);
}
上面是我写的一个程序,他的互斥锁不能正常运行,两个线程完全是乱来,但是我在创建线程是把CreateThread换成_beginthread,把函数头换成void就可以了,请问这是为什么?
最佳答案
  • 五星知识达人网友:十年萤火照君眠
  • 2021-02-10 05:44
控制台。。。还是叫终端比较好吧。帮你解决问题,首先就是父子进程通信问题,可以用文件,管道,或者socket等等,注意自己要写互斥,或加锁。然后就是关掉进程的标准输出了。代码还是要你自己写~
全部回答
  • 1楼网友:迷人又混蛋
  • 2021-02-10 06:13
是单核,但是是多线程啊,多个线程宏观上同时运行, 他们之间有共享资源,需要用互斥锁来确保不会被破坏啊
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯