当前位置: 首页 > 面试题库 >

有缓冲的锁定模式吗?

上官季
2023-03-14
问题内容

在Go中,有一个 缓冲 通道的概念。在填充缓冲区之前,该通道不会被阻塞。

通用 缓冲锁定 是否有任何通用模式?它将为有限数量的客户端锁定一些资源。


问题答案:

为有限数量的客户端锁定某些资源的原语称为信号量。

使用缓冲通道很容易实现:

var semaphore = make(chan struct{}, 4) // allow four concurrent users

func f() {
    // Grab the lock. Blocks as long as 4 other invocations of f are still running.
    semaphore <- struct{}{}

    // Release the lock once we're done.
    defer func() { <-semaphore }()

    // Do work...
}


 类似资料:
  • 我试图理解Hibernate中的悲观锁定机制(通过MySQL DB)。 我尝试运行以下示例: 但它并没有给我一个错误,而是执行得很好。是不是我误解了什么概念。这种行为正常吗? 我能够完美地测试乐观锁定,那么对于悲观锁定,是对概念有一些误解,还是我的代码缺少了一些东西。

  • 问题内容: awt是否可以进行双缓冲(在Java中)?目前,我知道awt不应该与swing一起使用,所以我不能使用BufferStrategy之类的东西(我已经用awt编写了一些我不想在swing中重写的代码)。 如果使用awt可以进行双缓冲,我是否必须手动写入缓冲区?与swing不同,awt似乎没有相同的内置双缓冲功能。 如果必须手动编写代码,是否有一个不错的教程可以看?还是对于新手程序员来说,

  • 问题内容: 使用JPA,我们可以手动或锁定来处理事务中的实体更改。 我想知道如果不指定这两种模式之一,JPA如何处理锁定?没有使用锁定模式? 如果不定义显式锁定模式,是否会丢失数据库完整性? 谢谢 问题答案: 我已经浏览了Java Persistence API 2.0 Final Release 规范的3.4.4 锁定模式 部分,虽然找不到任何 特定的 东西(它没有声明 这 是默认值或类似的东西

  • 问题内容: 我使用此类来管理与基础SQLiteDatabase的连接 它包含两个锁,一个用于读取,第二个用于写入。但是我仍然偶尔会遇到这种例外情况: 这意味着,在尝试获取getWritableDatabase中的锁定时,数据库以某种方式被锁定。 我的SQLiteOpenHelper是单例模式,并且DataSources仅使用BasicDataSource作为父类。 我可以做些什么来避免在显示的代码

  • 我在Oracle的博客上读到一篇关于JPA和锁定模式的文章。 我不完全理解和锁定模式类型之间的区别。 模式: 当用户选择这种模式时,他必须将EntityManager的状态flush()放到数据库中,以手动增加版本字段。因此,所有其他乐观事务都将失效(回滚)。在事务结束时还会对版本进行检查,以提交或回滚事务。 这似乎很清楚,但什么时候应该使用模式与模式?我看到的唯一标准是,当我希望事务优先于其他事

  • 问题内容: 我想在python中创建一个高效的循环缓冲区(目标是取缓冲区中整数值的平均值)。 这是使用列表收集值的有效方法吗? 什么会更有效(为什么)? 问题答案: 我会用一个arg 在文档中有一个与您想要的菜谱相似的菜谱。我断言它是最有效的,这完全取决于它是由C语言实现的,这是由一个熟练掌握了一流代码的技术人员组成的。