当前位置: 首页 > wzjs >正文

文山做女主播的在哪个网站谷歌外贸平台推广需要多少钱

文山做女主播的在哪个网站,谷歌外贸平台推广需要多少钱,没企业可以做网站吗,做网站 360的好不好错误原因分析与解决方法 错误原因 错误C2039:“try_lock_until”:不是"std::mutex"的成员的根本原因是std::mutex类型不支持try_lock_until方法。try_lock_until是std::timed_mutex或std::recursive_timed_mutex的成员函数,而不是std::mutex的成员函数。…

错误原因分析与解决方法

错误原因

错误C2039:“try_lock_until”:不是"std::mutex"的成员的根本原因是std::mutex类型不支持try_lock_until方法。try_lock_untilstd::timed_mutexstd::recursive_timed_mutex的成员函数,而不是std::mutex的成员函数。因此,当尝试在std::mutex上调用try_lock_until时,编译器会报错,提示找不到该成员函数。

错误代码

以下是原始代码示例,展示了错误的使用方式:

#include <iostream>
#include <thread>
#include <mutex>
#include <chrono>std::mutex mtx;void worker() {std::this_thread::sleep_for(std::chrono::seconds(2));std::lock_guard<std::mutex> lock(mtx);std::cout << "Worker thread locked the mutex." << std::endl;std::this_thread::sleep_for(std::chrono::seconds(2));std::cout << "Worker thread unlocked the mutex." << std::endl;
}int main() {std::thread t(worker);std::unique_lock<std::mutex> lock(mtx, std::defer_lock);auto timeout = std::chrono::steady_clock::now() + std::chrono::seconds(1);if (lock.try_lock_until(timeout)) { // 错误:std::mutex 不支持 try_lock_untilstd::cout << "Main thread locked the mutex." << std::endl;lock.unlock();}else {std::cout << "Main thread failed to lock the mutex within the timeout." << std::endl;}t.join();return 0;
}

错误提示

编译时会报错:

error C2039: "try_lock_until": 不是 "std::mutex" 的成员
message : 参见“std::mutex”的声明
message : 查看对正在编译的函数模板实例化“bool std::unique_lock<std::mutex>::try_lock_until<std::chrono::steady_clock,std::chrono::nanoseconds>(const std::chrono::time_point<std::chrono::steady_clock,std::chrono::nanoseconds> &)”的引用
message : 请参阅 "main" 中对 "std::unique_lock<std::mutex>::try_lock_until" 的第一个引用

正确代码

要解决此问题,需要将std::mutex替换为std::timed_mutex,因为std::timed_mutex支持try_lock_until方法。以下是修改后的正确代码:

#include <iostream>
#include <thread>
#include <mutex>
#include <chrono>std::timed_mutex mtx;
bool ready = false;void worker() {std::this_thread::sleep_for(std::chrono::seconds(2));std::lock_guard<std::timed_mutex> lock(mtx); // 使用 std::timed_mutexstd::cout << "Worker thread locked the mutex." << std::endl;std::this_thread::sleep_for(std::chrono::seconds(2));ready = true;std::cout << "Worker thread unlocked the mutex." << std::endl;
}int main() {std::thread t(worker);std::unique_lock<std::timed_mutex> lock(mtx, std::defer_lock); // 使用 std::timed_mutexauto timeout = std::chrono::system_clock::now() + std::chrono::seconds(1);if (lock.try_lock_until(timeout)) { // 正确:std::timed_mutex 支持 try_lock_untilstd::cout << "Main thread locked the mutex." << std::endl;lock.unlock();}else {std::cout << "Main thread failed to lock the mutex within the timeout." << std::endl;}t.join();return 0;
}

注意事项

• 选择合适的互斥锁类型

• 如果需要支持超时锁定功能(如try_lock_untiltry_lock_for),应使用std::timed_mutexstd::recursive_timed_mutex

• 如果不需要超时功能,可以继续使用std::mutexstd::recursive_mutex

• 确保编译器支持

try_lock_until是 C++14 标准引入的功能。确保你的编译器支持 C++14 或更高版本。在 Visual Studio 2022 中,默认支持 C++14。

• 头文件包含

• 确保包含<mutex><chrono>头文件:

     #include <mutex>#include <chrono>```通过以上修改,可以解决编译错误并正确实现超时锁定功能。---希望这个润色后的版本对你有帮助!
http://www.dtcms.com/wzjs/14429.html

相关文章:

  • 做短视频的网站收益百度网盘破解版
  • 怎么查网站的关键词排名免费发布推广的网站有哪些
  • 长沙专业做网站腾讯会议开始收费
  • html5网站建设企业论文百度号码认证平台
  • 杭州网站制作平台公司百度登陆页面
  • 音乐外链生成网站怎么做nba排名最新
  • 做一小说网站要花多钱网站推广的方式有
  • 好的漂亮的淘宝客网站模板下载推手平台哪个靠谱
  • 哪个网站做浏览器主页网络营销策划书
  • dw怎么做别人可以看的网站百度链接收录提交入口
  • 网站建设费用组成seo外链优化培训
  • 广东东莞桥头1例新冠状网站关键词优化办法
  • 百度网站排名哪家好注册一个域名需要多少钱
  • 贵州省建设厅二建报名网站临沂做网络优化的公司
  • 网站服务器托管seo建站教程
  • sempre音乐术语云南网络营销seo
  • C 做的窗体怎么变成网站新媒体
  • 大连做网站百度站长平台工具
  • 妇科医院网站建设怎么做搜索引擎营销的原理
  • 下沙建设局网站中国网站排名网官网
  • 做网站前段用什么软件产品运营方案
  • 贵阳花果园r区网站建设网络销售培训
  • 网站域名能更该吗北京seo优化哪家公司好
  • 各个做网站的有什么区别seo刷关键词排名软件
  • 网页顶部导航栏设计seo公司 彼亿营销
  • 厦门 网站建设黄冈网站推广优化找哪家
  • 如何保证网站安全发布新闻的平台有哪些
  • 企业信息填报登录seo综合查询什么意思
  • 苏州建站推广公司武汉外包seo公司
  • 连网站建设中国十大经典广告