Как собирается MyData быть предусмотрено на 2-й нити
Один общий метод заключается в создании очереди FIFO - это может быть станд :: Dequeue или связанный список, или независимо от того, и что нить продюсера нажимает элементы данных на один конец очереди, в то время как потребительский поток выталкивает элементы данных с другого конца очереди. Обязательно сериализуйте все обращения к очереди FIFO (используя мьютекс или аналогичный механизм блокировки), чтобы избежать условий гонки.
В качестве альтернативы вместо очереди вы можете иметь единый общий объект данных (по существу, очередь длины один) и каждый раз, когда он генерирует новые данные, ваш продюсерский поток перезаписывает объект. Это может быть сделано в тех случаях, когда не важно, что потребительский поток видит каждую часть данных, которые были сгенерированы, но важно только, чтобы он видел самые последние данные. Тем не менее, вам все равно нужно сделать блокировку, чтобы избежать риска чтения потребительского потока из объекта данных, в то же время поток производителя находится в середине письма к нему.
или требуется какой-то прореживание для снижения скорости.
Не требуется никакого прореживания - вторая нить может считывать столько же данных, сколько доступно для чтения, когда она просыпается.
Должен ли myData быть каким-то Синглтоном с блокировкой .
Singleton не является необходимым (хотя это можно сделать так). Механизм блокировки необходим, если у вас нет какого-либо механизма блокировки синхронизации (и если вы задаете этот уровень вопроса, у вас его нет, и вы не хотите пытаться его получить) вещи просто сейчас!)
Как о противоположном случае, когда данные, используемые в одной потребности резьбы использоваться при более высокой скорости в другом потоке.
Это то же самое - если вы используете надлежащий механизм связи между потоками, скорости, с которыми просыпаются потоки, не имеют значения, потому что механизм связи будет делать правильные вещи независимо от того, когда или как часто просыпаются потоки.
Это тот же самый экземпляр 'myData', который используется каждый раз, или вы создаете его новый экземпляр? это 'myData', измененный любым из этих потоков.? Если 'myData' не используется, как вы будете использовать его в обоих протекторах? –
Просто короткое замечание, когда вы заявили, что узнаете о многопоточности, если это не операционная система реального времени, нет никакой гарантии, что нить будет или может работать на частоте 100 Гц, каждые 10 мс ... – ipavlu
Вы пишете «Скажите 1-й поток работает при 100 Гц «в реальном времени» 2-й работает на 10 Гц », и я, честно говоря, даже не понимаю, что это значит. Да, я мог догадаться, но это был бы плохой подход к решению проблем. Не могли бы вы объяснить это немного? –