如何修改现有的Polygon?首先,我想在其外部添加一个Point.
poly = Polygon([(0, 0), (1, 1), (1, 0)])
我在寻找这样的东西:
poly.append_at(idx=3, Point(1, -1))
但我找不到任何类似的方法来做到这一点.
谢谢
关于这个: 如何使用条件变量
假设我们有许多执行此类代码的消费者线程(从引用的页面复制):
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)
那时将满足.我是否正确?)