开发者社区> 问答> 正文

多线程调用一个函数出错了? 400 报错

多线程调用一个函数出错了? 400 报错

@中山野鬼 你好,想跟你请教个问题:

我有个函数多线程调用的时候就错误退出了。我这样做可以不。没写过多线程的程序~

HANDLE hMutex = CreateMutex(NULL, FALSE, NULL);

.....

WaitForSingleObject(hMutex, INFINITE); 
MyFunc();
ReleaseMutex(hMutex);

展开
收起
爱吃鱼的程序员 2020-06-05 13:14:06 816 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    你这个是window下的?如果是我早忘光了。哈。基本上几年前,我就把“线程”这个概念扔掉了。用进程的构造方式,我们可以讨论讨论中间的逻辑问题。问我线程的任何问题,可权当我不会,因为线程的事情,进程都可以做。所谓线程省资源,更高效,那是基于没有考虑线程额外带来的逻辑的空谈。######

    引用来自“中山野鬼”的答案

    你这个是window下的?如果是我早忘光了。哈。基本上几年前,我就把“线程”这个概念扔掉了。用进程的构造方式,我们可以讨论讨论中间的逻辑问题。问我线程的任何问题,可权当我不会,因为线程的事情,进程都可以做。所谓线程省资源,更高效,那是基于没有考虑线程额外带来的逻辑的空谈。
    不懂就说你不懂又不会死,别在这里误导新手。线程当然比进程轻量,线程能做的事当然很多进程都做不了,而且楼主发的代码是关于互斥体的与多线程没多大关系,互斥体是跨进程的,你即然这么熟悉多进程,看到一个互斥体的代码却扯了一堆不相关的东西? 而且异常退出关线程、进程啥事?调试方法的问题,你告诉楼主调试中断、捕获异常就行了。
    ######

    引用来自“ssn6”的答案

    引用来自“中山野鬼”的答案

    你这个是window下的?如果是我早忘光了。哈。基本上几年前,我就把“线程”这个概念扔掉了。用进程的构造方式,我们可以讨论讨论中间的逻辑问题。问我线程的任何问题,可权当我不会,因为线程的事情,进程都可以做。所谓线程省资源,更高效,那是基于没有考虑线程额外带来的逻辑的空谈。
    不懂就说你不懂又不会死,别在这里误导新手。线程当然比进程轻量,线程能做的事当然很多进程都做不了,而且楼主发的代码是关于互斥体的与多线程没多大关系,互斥体是跨进程的,你即然这么熟悉多进程,看到一个互斥体的代码却扯了一堆不相关的东西? 而且异常退出关线程、进程啥事?调试方法的问题,你告诉楼主调试中断、捕获异常就行了。

    哈,随便你说懂不懂,“线程比进程轻,”,我倒想问问,这个“轻”是怎么定义的?系统自定义的(当然不是说你本人),还是针对应用效果定义的?或是开发复杂度定义的?

    楼主发的代码是关于互斥体的与多线程没多大关系,互斥体是跨进程的,”为了忙个同步问题,扯出“线程”,结果又扯出“进程”你觉得这样的设计思维没有问题,我就没有办法咯。

    哈。工程设计,谁对谁错,需要实际做出来给客户检验,当然也包括不停的维护和改良这个系统的程序员来评判。落到我的个人看法上,会让思维和逻辑变的更复杂的系统,我是不参合讨论的。你说我不懂,那我就不懂吧,而且我真心的说我不懂。因为我根本没必要去懂那些把逻辑搞的更杂而会形成更加混乱局面的东西。包括思维方法,和设计工具以及一堆堆没有价值的概念名词,(有么有价值不是我说的哦。是系统的可延展设计和用户感受说的)哈。

    ######

    引用来自“中山野鬼”的答案

    引用来自“ssn6”的答案

    引用来自“中山野鬼”的答案

    你这个是window下的?如果是我早忘光了。哈。基本上几年前,我就把“线程”这个概念扔掉了。用进程的构造方式,我们可以讨论讨论中间的逻辑问题。问我线程的任何问题,可权当我不会,因为线程的事情,进程都可以做。所谓线程省资源,更高效,那是基于没有考虑线程额外带来的逻辑的空谈。
    不懂就说你不懂又不会死,别在这里误导新手。线程当然比进程轻量,线程能做的事当然很多进程都做不了,而且楼主发的代码是关于互斥体的与多线程没多大关系,互斥体是跨进程的,你即然这么熟悉多进程,看到一个互斥体的代码却扯了一堆不相关的东西? 而且异常退出关线程、进程啥事?调试方法的问题,你告诉楼主调试中断、捕获异常就行了。

    哈,随便你说懂不懂,“线程比进程轻,”,我倒想问问,这个“轻”是怎么定义的?系统自定义的(当然不是说你本人),还是针对应用效果定义的?或是开发复杂度定义的?

    楼主发的代码是关于互斥体的与多线程没多大关系,互斥体是跨进程的,”为了忙个同步问题,扯出“线程”,结果又扯出“进程”你觉得这样的设计思维没有问题,我就没有办法咯。

    哈。工程设计,谁对谁错,需要实际做出来给客户检验,当然也包括不停的维护和改良这个系统的程序员来评判。落到我的个人看法上,会让思维和逻辑变的更复杂的系统,我是不参合讨论的。你说我不懂,那我就不懂吧,而且我真心的说我不懂。因为我根本没必要去懂那些把逻辑搞的更杂而会形成更加混乱局面的东西。包括思维方法,和设计工具以及一堆堆没有价值的概念名词,(有么有价值不是我说的哦。是系统的可延展设计和用户感受说的)哈。

    你不是忘光了,你是根本没用过多线程,更不知道多线程是什么东西,你不是不懂你是不懂到令人震惊的地步,可是你又喜欢喷,线程为什么比线程轻量要问我干什么,不懂自已去学习,什么是线程能做的进程不能做的自己去搞清楚,互斥体是跨进程的不是说楼主的代码里扯到了跨进程,他也可以当线程互斥体来用,你说你根本就一个外行,你还死要面子,动不动就写万言书装逼你累不?

    ######楼主的意思应该是在主线程里面开一个新的线程去完成一个任务,但是任务还没有完成主线程就退出了。如果这这样的话,上面的代码可以完成楼主的需求,可是感觉你这样做没有什么意义啊。######就是在主进程中,每次过来一个连接就创建一个线程执行A函数,第一个线程的A函数执行没问题,第二个线程执行的时候程序就退出了,这个咋看啥原因。######

    引用来自“ssn6”的答案

    引用来自“中山野鬼”的答案

    引用来自“ssn6”的答案

    引用来自“中山野鬼”的答案

    你这个是window下的?如果是我早忘光了。哈。基本上几年前,我就把“线程”这个概念扔掉了。用进程的构造方式,我们可以讨论讨论中间的逻辑问题。问我线程的任何问题,可权当我不会,因为线程的事情,进程都可以做。所谓线程省资源,更高效,那是基于没有考虑线程额外带来的逻辑的空谈。
    不懂就说你不懂又不会死,别在这里误导新手。线程当然比进程轻量,线程能做的事当然很多进程都做不了,而且楼主发的代码是关于互斥体的与多线程没多大关系,互斥体是跨进程的,你即然这么熟悉多进程,看到一个互斥体的代码却扯了一堆不相关的东西? 而且异常退出关线程、进程啥事?调试方法的问题,你告诉楼主调试中断、捕获异常就行了。

    哈,随便你说懂不懂,“线程比进程轻,”,我倒想问问,这个“轻”是怎么定义的?系统自定义的(当然不是说你本人),还是针对应用效果定义的?或是开发复杂度定义的?

    楼主发的代码是关于互斥体的与多线程没多大关系,互斥体是跨进程的,”为了忙个同步问题,扯出“线程”,结果又扯出“进程”你觉得这样的设计思维没有问题,我就没有办法咯。

    哈。工程设计,谁对谁错,需要实际做出来给客户检验,当然也包括不停的维护和改良这个系统的程序员来评判。落到我的个人看法上,会让思维和逻辑变的更复杂的系统,我是不参合讨论的。你说我不懂,那我就不懂吧,而且我真心的说我不懂。因为我根本没必要去懂那些把逻辑搞的更杂而会形成更加混乱局面的东西。包括思维方法,和设计工具以及一堆堆没有价值的概念名词,(有么有价值不是我说的哦。是系统的可延展设计和用户感受说的)哈。

    你不是忘光了,你是根本没用过多线程,更不知道多线程是什么东西,你不是不懂你是不懂到令人震惊的地步,可是你又喜欢喷,线程为什么比线程轻量要问我干什么,不懂自已去学习,什么是线程能做的进程不能做的自己去搞清楚,互斥体是跨进程的不是说楼主的代码里扯到了跨进程,他也可以当线程互斥体来用,你说你根本就一个外行,你还死要面子,动不动就写万言书装逼你累不?

    哈。window的线程,10年前就写过。arm的里面的解码算法程序本身也包括三个线程,用于解决arm和dsp处理速度不匹配的问题。你说我不懂线程,我可以去“承认”,你说我没做过线程设计,哈,这个就不行了。我经历的事实是摆在那的,不是你所能否定的。

    另外说一句,你仅能肯定而不能否定一个事物,只能证明你并没有完全了解这个事物。等你啥时懂我在说什么了,在和我讨论“线程”的优势吧。

    与其我参与楼主的问题,倒不如给楼主额外的建议和思考问题的方法,也即,是否真的要去学习“线程”的设计方法。我建议你,要么直接回复楼主的答案,要么也就设计方法的好坏给楼主建议,与我争懂不懂,哈,很无聊,不和你争,你说什么都是“对的”。

    ######

    引用来自“狼来了而已”的答案

    楼主的意思应该是在主线程里面开一个新的线程去完成一个任务,但是任务还没有完成主线程就退出了。如果这这样的话,上面的代码可以完成楼主的需求,可是感觉你这样做没有什么意义啊。
    加些日志看看,是不是在执行过程中有什么原因或者异常导致程序退出了。
    2020-06-05 13:15:23
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
多IO线程优化版 立即下载
fibjs 模块重构从回调到协程--陈垒 立即下载
fibjs 模块重构从回调到协程 立即下载

相关实验场景

更多