标签: synchronization

Vulkan中命令缓冲区之间的同步

有几种方法可以处理Vulkan中的同步.这就是我理解的方式:

  • Fences是GPU到CPU的同步.
  • 信号量是GPU到GPU的同步,它们用于同步队列提交(在相同或不同的队列上).
  • 事件更通用,在CPU和GPU上重置和检查.
  • 障碍用于命令缓冲区内的同步.

在我的情况下,我有两个命令缓冲区.我希望第二个命令缓冲区在第一个命令缓冲区之后执行.

submitInfo.pCommandBuffers = &firstCommandBuffer;
vkQueueSubmit(queue, 1, &submitInfo, VK_NULL_HANDLE);

// wait for first command buffer to finish
submitInfo.pCommandBuffers = &secondCommandBuffer;
vkQueueSubmit(queue, 1, &submitInfo, VK_NULL_HANDLE);
Run Code Online (Sandbox Code Playgroud)

什么样的同步最适合这个?如果我使用的vkQueueWaitIdle(queue)),是与使用栅栏相同的东西,或者我应该使用事件或信号量?

如果我同时向队列发送多个命令缓冲区:

std::vector<VkCommandBuffer> submitCmdBuffers = {
        firstCommandBuffer,
        secondCommandBuffer
    };
    submitInfo.commandBufferCount = submitCmdBuffers.size();
    submitInfo.pCommandBuffers = submitCmdBuffers.data();
Run Code Online (Sandbox Code Playgroud)

还有一种方法可以在第一个和第二个之间同步吗?

c++ synchronization gpu vulkan

23
推荐指数
2
解决办法
2644
查看次数

字典什么时候在Add或ContainsKey上抛出IndexOutOfRangeException?

在一个繁忙的ASP .NET网站上,我有一个Dictionary,它充当缓存,基本上存储键/值对以供以后检索.

在高负载时,Dictionary有时会进入一个状态,每当我调用ContainsKey或Add方法时它总是抛出一个IndexOutOfRangeException.异常发生在私有FindEntry方法中.

我怀疑这可能是由于同步问题,但我不确定.

谁能告诉我在哪种情况下会发生这种情况?我的目标是收集足够的信息,以便我可以在开发环境中重现问题.

.net synchronization dictionary

22
推荐指数
1
解决办法
5343
查看次数

我推送它后可以强制远程hg repo进行hg更新吗?

我在我的笔记本电脑上的mercurial存储库中编写代码,然后通过服务器将其推送到服务器hg push,然后在服务器上运行hg update,然后在服务器上运行我新编写的代码.有什么办法可以强制服务器上的repo在我从笔记本电脑上推送到服务器后自动更新到最新版本,这样我就可以保存这个步骤了吗?

version-control mercurial synchronization

22
推荐指数
1
解决办法
3994
查看次数

Eclipse:'Revert'和'Override and Update'之间的区别

是什么"还原"和"改写和更新"选项之间从Eclipse的差异(团队同步 - SVN(工作区) - 外出模式)?

提前致谢.

java eclipse svn synchronization revert

22
推荐指数
3
解决办法
2万
查看次数

如何在Python 2.7中实现具有超时的锁定

有没有办法在Python中为多线程目的实现锁定,其acquire方法可以有任意超时?到目前为止,我发现的唯一可行的解​​决方案是使用轮询

  • 我发现不优雅和低效
  • 不保留锁的有限等待/进度保证作为临界区问题的解决方案

有没有更好的方法来实现这个?

python multithreading synchronization

22
推荐指数
2
解决办法
1万
查看次数

挥发性背驮式.这对于visiblity来说足够了吗?

这是关于不稳定的背驮式.目的:我希望达到轻量级vars visibilty.a_b_c的一致性并不重要.我有一堆vars,我不想让它们都变得不稳定.

这段代码是否安全?

class A {
    public int a, b, c;
    volatile int sync;

    public void setup() {
        a = 2;
        b = 3;
        c = 4;
    }

    public void sync() {
        sync++;
    }
}

final static A aaa = new A();

Thread0:
aaa.setup();
end

Thread1:
for(;;) {aaa.sync(); logic with aaa.a, aaa.b, aaa.c}

Thread2:
for(;;) {aaa.sync(); logic with aaa.a, aaa.b, aaa.c}
Run Code Online (Sandbox Code Playgroud)

java synchronization volatile

22
推荐指数
2
解决办法
5474
查看次数

当锁没有争用时,锁(...)有多贵?

在查看双重检查锁定时,我看到了许多建议,只是跳过第一次检查并立即进行锁定,然后检查后再进行检查.

这让我想知道,什么时候是lock (this.padlock)"便宜"的?

c# concurrency synchronization locking

22
推荐指数
2
解决办法
1498
查看次数

单线程与多线程

在一次采访中询问了这个问题.第一部分是编写单例类:

class Singleton
{
    static Singleton *singletonInstance;
    Singleton() {}

  public:
    static Singleton* getSingletonInstance()
    {
        if(singletonInstance == null)
        {
            singletonInstance = new Singleton();
        }
        return singletonInstance;
    }
};
Run Code Online (Sandbox Code Playgroud)

然后我被问到如何getSingletonInstance()在多线程情况下处理这个问题.我不太确定,但我修改为:

class Singleton 
{
    static Singleton *singletonInstance;
    Singleton() {}
    static mutex m_;

  public:
    static Singleton* getSingletonInstance()
    {
        m_pend();
        if(singletonInstance == null)
        {
            singletonInstance = new Singleton();
        }
        return singletonInstance;
    }

    static void releaseSingleton()
    {
        m_post();
    }
};
Run Code Online (Sandbox Code Playgroud)

然后有人告诉我,虽然需要一个互斥锁,但挂起和发布互斥锁效率不高,因为需要时间.并且有一种更好的方法来应对这种情况.

有没有人知道在多线程情况下处理单例类的更好,更有效的方法?

c++ singleton multithreading synchronization mutex

22
推荐指数
2
解决办法
2万
查看次数

一个以上的goroutine打印到stdout是否安全?

我的程序中有多个goroutine,每个都在fmt.Println没有任何显式同步的情况下进行调用.这是安全的(即,每条线路是否单独出现而没有数据损坏),或者我是否需要创建另一个带有同步的goroutine来专门处理打印?

concurrency synchronization go goroutine

22
推荐指数
3
解决办法
7238
查看次数

如何在不同设备之间同步数据

我计划实现一个应用程序,我已经到了一个我不知道什么是最好的方法的点.

场景:

我有一个应用程序,我正在制作待办事项列表,我正在添加3项.我用我的手机.然后我拿起我的平板电脑,并希望继续添加另一项任务.过了一会儿,我带着妻子的电话想要添加2个新任务.

基本上我想要一个非常简单的方法来在线存储任务,并能够与应用程序同步.

我看到两种可能的方式:

  • 有一个带有数据库+ Web服务调用的Web服务器.这样做的缺点是让主机付费,学习一些额外的mysql + Web服务技术.

  • 以某种方式存储云上的数据,并通过登录允许应用程序访问存储该文件的帐户.我在想像Google Drive/Dropbox这样的东西.但我不知道如何只能同步更新的值,而不是整个文件.因为我在想,如果我将所有任务存储到一个文件中,每次更新文件时,我都需要完全上传它,这不是最好的方法.

我对任何建议持开放态度.你会推荐什么方法?

cloud android synchronization data-synchronization

22
推荐指数
2
解决办法
2万
查看次数