多亏了Scott Meyers医生的书,第263页,我最近发现了<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<div class="grid-container" id="gridid1556351f5ece4ee3a7dce6962be48e39" >
<i class="material-icons" style="font-size:48px;">notifications</i>
<i class="material-icons" style="font-size:48px;">delete</i>
</div>
,所以我不得不对其进行搜索on cppreference来进行更多的研究。
https://en.cppreference.com/w/cpp/thread/condition_variable
我对此有几个疑问,因为我已经思考了好几天,但我仍然不明白。
我的问题与这段代码有关:
function unix_to_local($timestamp, $timezone){
// Create datetime object with desired timezone
$local_timezone = new DateTimeZone($timezone);
$date_time = new DateTime('now', $local_timezone);
$offset = $date_time->format('P'); // + 05:00
// Convert offset to number of hours
$offset = explode(':', $offset);
if($offset[1] == 00){ $offset2 = ''; }
if($offset[1] == 30){ $offset2 = .5; }
if($offset[1] == 45){ $offset2 = .75; }
$hours = $offset[0].$offset2 + 0;
// Convert hours to seconds
$seconds = $hours * 3600;
// Add/Subtract number of seconds from given unix/gmt/utc timestamp
$result = floor( $timestamp + $seconds );
return $result;
}
1)我不理解cppreference的作者通过该注释和“等待线程,只能再次阻止”的含义,因为我什至都不知道如何翻译它,并且
2)它确切地表示哪个线程,特别是为什么。
3)它表示thread_worker还是主线程(父线程)?
4)他们选择这样做吗?
如果作者先通知然后手动解锁,它会发生什么变化?
答案 0 :(得分:4)
这是次要的,通常是不相关的优化。引起关注的原因是,调用notify
或notify_all
之后唤醒的每个线程都必须在互斥锁被允许继续之前锁定互斥锁。如果对unlock
(或notify_one
)的调用之后发生了对notify
的调用,则唤醒的线程将不得不等到调用线程将其解锁之后再进行调用。如果对unlock
的调用是在通知调用之前进行的,则一个唤醒的线程可以立即获取互斥体。