自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(2)
  • 收藏
  • 关注

原创 c++的调用约定总结

注意: 可变参数函数:必须使用 __cdecl,,, 因为__cdecl的函数调用栈的清理是由调用者清理的,如果使用别的调用约定,被调用者压根就不知道参数。如上文所说,如果不指定函数的调用方式,默认使用默认调用方式 __cdecl,而这里的线程函数要求是**__stdcall**,__stdcall(标准调用, 参数入栈顺序是从右到左, 但是它的函数调用堆栈是由被调用者清理的。__cdecl (默认的调用方式, 参数入栈顺序是从右到左, 而且函数调用栈的清理是由调用者清理的),一. 函数参数的入栈顺序。

2025-12-20 09:24:15 280

原创 条件变量condition_variable使用及陷阱

同时,一个简单的wait函数调用内部会很复杂,有可能线程A调用了wait函数但是还没有进入到wait阻塞等待前,另一个线程b在此时却调用了notify函数,此时notify的信号就丢失了,如果加了锁,线程B必须等待线程A释放了锁并进入了等待状态后才可以调用notify,继而防止信号丢失。那怎么解决虚假唤醒的问题呢,可以在线程由阻塞状态被唤醒后继续判断附加条件,看是否满足唤醒的条件,如果满足则继续执行,如果不满足,则继续去等待,体现在代码中,即将。把当前线程添加到等待线程列表中,该线程会持续。

2025-11-24 22:10:02 682

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除