我试图了解情况变量。 我想知道使用条件变量的常见情况是什么。
其中一个实例是阻挡点,即两条路口进入点,即生产者将某一项物品推入点,而消费者则从点燃一个物品。 如果 que点空,消费者的read子正在等待,直到生产线上发送信号。
还需要使用条件变数的其他设计情况是什么?
我更喜欢以经验为根据的例子,例如实际应用的经验。
我试图了解情况变量。 我想知道使用条件变量的常见情况是什么。
其中一个实例是阻挡点,即两条路口进入点,即生产者将某一项物品推入点,而消费者则从点燃一个物品。 如果 que点空,消费者的read子正在等待,直到生产线上发送信号。
还需要使用条件变数的其他设计情况是什么?
我更喜欢以经验为根据的例子,例如实际应用的经验。
一种使用条件变量比仅仅使用电文更复杂,即“共用一个锁”,因为不同校对正在等待同样基本性质的明显不同条件。 例如,你有一个(非常高的、简化的)网络藏匿点。 藏匿处的每一条都有三个可能的国家:没有。
getURL:
lock the cache
three cases for the key:
not present:
add it (IN_PROGRESS)
release the lock
fetch the URL
take the lock
update to COMPLETE and store the data
broadcast the condition variable
goto COMPLETE
COMPLETE:
release the lock and return the data
IN_PROGRESS:
while (still IN_PROGRESS):
wait on the condition variable
goto COMPLETE
在实践中,我使用了该模式,在没有附表人的任何帮助的情况下,实施PPOSIX功能的变式pthread_once
。 由于我无法使用每条<控制代码>的ema光或锁,而且仅仅在24小时开始使用,这就是说该功能被允许失败,而<条码>。 仅有三维先入。 为此,pthread_once
其本身没有界定的错误代码,因此执行该守则可能失败 t 给你的打电话者以任何良好选择......
当然,根据这种模式,你必须谨慎地缩小规模。 每当任何初步化工作完成时,每一次等待的read子都赶上lock锁。 因此,当你设计这个制度时,你非常仔细地思考了艰苦条件,然后决定,在你看到经证实的绩效问题之前,你可以做任何实际执行。
我知道这并非非常有用,但我用的是条件变数,而无论何时,我都想等待事情发生,或只是等到事情发生。
在我使用条件变数的情况下,一种非常常见的情况是,每几分钟都听起来做某些处理,然后又回到睡觉。 在关闭主线时,显示背景已接近尾声,然后加入。 当时的背景已经 wait了,等待时间,才能睡觉。
背景情况遵循这一基本逻辑
void threadFunction() {
initialisation();
while(! shutdown()) {
backgroundTask();
shutdown_condition_wait(timeout_value);
}
cleanup();
}
这使背景迅速和令人宽慰地关闭。
如果我有一些这样的线索,那么每台主要功能信号就会关闭,然后在下一次之后加入。 这使得每个翻新部分能够同时关闭。
我使用条件变量,而不是错误易发的Win32事件物体。 随同,你不必对虚假信号感到担忧。 更容易等待多起事件的发生。
var也能够取代ema磷,因为它们更是通用的。
I used it to send synchronized messages, where a sync-object was added.
The sync object consisted of a condition variable with a "ready" boolean.
In the syncMsg::send() function, there was a sync->wait() and in the syncMsg::handle() function, there was a sync->go().
由于可能出现僵局,应当明智地加以利用。
I m getting this linker error. I know a way around it, but it s bugging me because another part of the project s linking fine and it s designed almost identically. First, I have namespace LCD. Then I ...
I have been searching for sample code creating iterator for my own container, but I haven t really found a good example. I know this been asked before (Creating my own Iterators) but didn t see any ...
Is there an equivalent to tidy for HTML code for C++? I have searched on the internet, but I find nothing but C++ wrappers for tidy, etc... I think the keyword tidy is what has me hung up. I am ...
I m new to C++ and am wondering how much time I should invest in learning how to implement template classes. Are they widely used in industry, or is this something I should move through quickly?
Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...
Why is it when i do the following i get errors when relating to with wchar_t? namespace Foo { typedef std::wstring String; } Now i declare all my strings as Foo::String through out the program, ...
I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...
Is it possible to check with the means of pure X11/Xlib only whether the given window is iconified/minimized, and, if it is, how?