小编coo*_*t29的帖子

在Web工作程序仍在运行时向其发布消息

假设我们有一个Web工作者引用一个名为"worker.js"的文件.我们使用worker在"worker.js"中执行一个执行一些冗长操作的函数.我们将相应的消息发布给工作者并在主线程中继续.但是,在工作人员完成初始工作之前,主线程会向其发送另一条消息.

我的问题:工人是否会继续我们的计时功能,只会在完成后处理新发布的消息,还是会中断当前的操作,直到新的消息完成为止?

javascript multithreading asynchronous interrupt web-worker

5
推荐指数
1
解决办法
767
查看次数

Metal 中的多个渲染目标

我正在尝试实现两个不同的,CAMetalLayers并使用一个MTLRenderCommandEncoder将相同的场景渲染到两个层(OS X 的金属)。

为此,我尝试创建一个MTLRenderPassDescriptor并将两个图层的纹理附加到其颜色附件。我的渲染方法如下所示:

- (void)render {
    dispatch_semaphore_wait(_inflight_semaphore, DISPATCH_TIME_FOREVER);

    id<MTLCommandBuffer> commandBuffer = [_commandQueue commandBuffer];
    __block dispatch_semaphore_t block_sema = _inflight_semaphore;
    [commandBuffer addCompletedHandler:^(id<MTLCommandBuffer> buffer) {
        dispatch_semaphore_signal(block_sema);
    }];

    MTLRenderPassDescriptor *renderPass = [MTLRenderPassDescriptor renderPassDescriptor];

    for (int i = 0; i < [_metalLayers count]; i++) {
        _metalDrawables[i] = [_metalLayers[i] nextDrawable];
        renderPass.colorAttachments[i].texture = _metalDrawables[[_metalDrawables count] - 1].texture;
        renderPass.colorAttachments[i].clearColor = MTLClearColorMake(0.5, 0.5, (float)i / (float)[_metalLayers count], 1);
        renderPass.colorAttachments[i].storeAction = MTLStoreActionStore;
        renderPass.colorAttachments[i].loadAction = MTLLoadActionClear;
    }

    id<MTLRenderCommandEncoder> commandEncoder = [commandBuffer renderCommandEncoderWithDescriptor:renderPass];
    [commandEncoder setRenderPipelineState:_pipeline]; …
Run Code Online (Sandbox Code Playgroud)

cocoa core-animation objective-c render-to-texture metal

5
推荐指数
1
解决办法
3216
查看次数