b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

关于多线程: 标准C函数'Localtime'的线程安全版本

电脑杂谈  发布时间:2020-05-21 14:23:46  来源:网络整理

线程与线程池_java线程池安全停止_localtime 线程安全

我在多线程应用程序中使用本地时间

我必须用一个线程安全的版本来替换它,我知道这个版本叫做Localtime

但是,在执行此操作时,由于链接失败,我无法完成生成

我甚至不知道从哪里开始寻找解决方案

我的系统组件是:

我假设(虽然我不确定)这个功能通常可以在IDE提供的标准库中使用. 我说得对吗?

我需要向项目中添加另一个库,还是需要在项目设置中包含另一个库?

如果无法将此函数“导入”到我的代码中,那么对于Localtime函数的线程安全版本,我还有哪些其他选项?

更新:

我不想使用操作系统资源(即互斥锁),而是希望调用一个标准例程,该例程完全执行“Localtime”操作,但不使用它使用的静态结构(使其线程不安全)

java线程池安全停止_线程与线程池_localtime 线程安全

我看不出本地时间使用静态结构作为起点的任何原因,因此我假设相应的本地时间不会使用任何操作系统资源来解决它,而只是限制静态结构的使用

如果没有这样的选择是可行的localtime 线程安全,那么我最好自己去实现,因为约会系统的“不规则性”,只有我更喜欢使用经过适当测试的东西

这里的问题是如何更改本地时间到我的项目的链接(而不是如何实现本地时间)

谢谢你

您需要为线程安全的Localtime()创建自己的包装器,该包装器基本上是实现Localtime\r()

例如

静态发送互斥锁

作废我的本地时间初始化(void)

{

tx_uux_uu创建(&;localtime_ulock,“localtime_ulock”,tx_uinherit)

线程与线程池_java线程池安全停止_localtime 线程安全

}

struct tm*my_uulocaltime_uur(常量时间tim,struct tm*结果)

{

结构tm*t

tx_uux_uu-get(本地时间锁定,tx_u-WAIT_u-FOREVER)

t=本地时间(tim)

如果(t)

*结果=*t

发送互斥锁(本地时间锁定)

返回t?结果: 空

localtime 线程安全_java线程池安全停止_线程与线程池

}

你需要在启动时打电话给我

这也意味着您需要使用my_uuLocalTime_ur函数替换所有地方的所有调用. 没有人可以直接调用Localtime(),因为这可能是通过调用新的mylocaltime的代码来实现的,这会导致竞争局面

如果线程安全版本不可用,则必须创建一个带有R()的版本,但必须使用互斥锁来确保它们是可用的. 我可能使用相同的名称,但有些参数总是使用您经常调用的备用名称,如果可用,它将直接调用Localtime

此外,如果您的系统使用的互斥量不同于pthread互斥量localtime 线程安全,则会出现这种情况;请使用本机互斥量而不是pthread互斥量

静态pthread_uux_uux_uux_uux_uulocaltime_ur=pthread_uumutex_u初始化器

struct tm*localtime_ur(const time_ut*restrict timer,struct tm*restrict结果)

{

结构tm*r=0

if(pthread_uuumutex_u锁定(&mx_uulocaltime_ur)==0)

localtime 线程安全_线程与线程池_java线程池安全停止

{

r=本地时间(计时器)

如果(r!=0)

{

*结果=*r

r=结果

}

如果(pthread_uuumutex_u解锁(&mx_ulocaltime_ur)!=0)

r=0

}

返回r

}

不是无编译的测试

如果互斥锁的默认属性不适合您,则需要更大的努力才能正确初始化互斥锁


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-217806-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...