【问题标题】:Critical section in perlperl 中的临界区
【发布时间】:2013-01-11 20:14:53
【问题描述】:

是否可以在 perl 中进入临界区,以容纳其他线程并在单线程中进行一些计算?就像在 .NET 中一样:

lock(_syncRoot)
{
   // Single-threaded zone
}

【问题讨论】:

    标签: multithreading perl critical-section


    【解决方案1】:

    是的,Perl 有锁和信号量。有关详细信息和示例,请参阅the documentation on threads

    您的代码的 Perl 版本:

    {
        lock($_syncRoot);
        # Single-threaded zone
    }
    

    【讨论】:

    • 只是为了兴趣,所以我可以用这种方式锁定数据库处理程序?
    • 您可以在任何变量上调用锁定函数。该变量可能是您的数据库句柄,也可能只是一个$db_lock var,用于跟踪数据库处理程序何时被锁定。无论哪种方式,您都只是在 lock() 的范围内创建了一个关键部分。
    • 它们是“句柄”(让您暂停),而不是处理者(采取行动响应)
    • @ikegami 嗯..你是在向我解释处理程序和线程锁定的区别吗?我不明白你的意思。
    • 不,我正在纠正你的英语。我说的是“数据库句柄”,而不是“数据库处理程序”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-17
    • 2013-03-26
    • 2013-04-07
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多