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

而且只要返回一次22整个循环中就都是22一直到循环结束,高手帮忙看看这是什么错误?

而且只要返回一次22整个循环中就都是22一直到循环结束,高手帮忙看看这是什么错误?

C PHP
慕桂英3389331 2023-03-03 14:10:18
为了实现windows下WaitForSingleObject等待互斥体的功能我在Unix下写了一个int WaitForSingleObject(pthread_mutex_t * mutex,int nMilliseconds){if (nMilliseconds == INFINITE){if (pthread_mutex_lock(mutex) != 0){printf("pthread_mutex_lock error errno = %d\n");return WAIT_FAILED;}return WAIT_OBJECT_0;} else {int nTime = nMilliseconds;do {int nRet = pthread_mutex_trylock(mutex);switch (nRet){case 0:return WAIT_OBJECT_0;case EBUSY:{Sleep(100);nTime -= 100;}break;default:{Sleep(100);nTime -= 100;}break;}}while ( 0 < nTime );return WAIT_TIMEOUT;}}其中pthread_mutex_lock没有什么问题,pthread_mutex_trylock大多数时候也是正常的,但有时候pthread_mutex_trylock就返回22,为什么
查看完整描述

1 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

#define EINVAL 22 /* Invalid argument */
看看你的mutex是不是在别处被干掉了

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

添加回答

举报

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