小编rac*_*cic的帖子

匀称:向现有多边形添加新点

如何修改现有的Polygon?首先,我想在其外部添加一个Point.

poly = Polygon([(0, 0), (1, 1), (1, 0)])

我在寻找这样的东西:

poly.append_at(idx=3, Point(1, -1))

但我找不到任何类似的方法来做到这一点.

谢谢

python shapely

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

由pthread_cond_signal()唤醒但失去了对互斥锁的竞争的线程会发生什么

关于这个: 如何使用条件变量

假设我们有许多执行此类代码的消费者线程(从引用的页面复制):

while (TRUE) {
    s = pthread_mutex_lock(&mtx);
    while (avail == 0) {   /* Wait for something to consume */
       s = pthread_cond_wait(&cond, &mtx);
    }
    while (avail > 0) {   /* Consume all available units */ 
        avail--;
    }
    s = pthread_mutex_unlock(&mtx);
}
Run Code Online (Sandbox Code Playgroud)

我假设这里的场景是:主线程调用pthread_cond_signal()来告诉消费者线程做一些工作.

据我所知 - 后续线程调用pthread_mutex_lock()然后调用pthread_cond_wait()(以原子方式解锁互斥锁).到目前为止,没有任何消费者线程声称使用互斥锁,它们都在pthread_cond_wait()上等待.

当主线程调用pthread_cond_signal()时,在联机帮助页之后,至少会唤醒一个线程.当它们中的任何一个从pthread_cond_wait()返回时,它会自动声明互斥锁.

所以我的问题是:现在关于提供的示例代码会发生什么?也就是说,失去互斥体竞赛的线程现在做了什么?

(AFAICT赢得互斥锁的线程,应该运行其余的代码并释放互斥锁.丢失的那个应该等待互斥锁 - 在第一个嵌套 while循环中的某个地方- 而胜利者持有它并且在它被释放之后在pthread_cond_wait()上开始阻塞,因为while (avail == 0)那时将满足.我是否正确?)

c mutex pthreads condition-variable

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

标签 统计

c ×1

condition-variable ×1

mutex ×1

pthreads ×1

python ×1

shapely ×1