为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我把函数头换成void就可以了,请问这是为什么?

为什么我把函数头换成void就可以了,请问这是为什么?

C
梵蒂冈之花 2023-03-02 18:14:14
#include <stdio.h>  #include <windows.h> #include<conio.h>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就可以了,请问这是为什么?
查看完整描述

1 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

控制台,还是叫终端比较好吧。帮你解决问题,首先就是父子进程通信问题,可以用文件,管道,或者socket等等,注意自己要写互斥,或加锁。然后就是关掉进程的标准输出了。代码还是要你自己写才会有进步哈~

查看完整回答
反对 回复 2023-03-06
  • 1 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信