Описание тега data-race

6 ответов

Являются ли "гонки данных" и "условия гонки" фактически одним и тем же в контексте параллельного программирования

Я часто нахожу эти термины в контексте параллельного программирования. Они одно и то же или разные?
1 ответ

Путаница в многопоточности в C++

Я пытаюсь смоделировать вероятностную проблему, в которой есть n клиентов и n серверов. Каждый клиент случайным образом отправляет запрос на любой сервер, поэтому каждый сервер может получать любое количество запросов, мне нужно рассчитать ожидаемое…
27 авг '18 в 10:54
3 ответа

Пример использования std::mutex

Я написал этот кусок кода в качестве теста: #include <iostream> #include <thread> #include <mutex> int counter = 0; auto inc(int a) { for (int k = 0; k < a; ++k) ++counter; } int main() { auto a = std::thread{ inc, 100000 }; aut…
16 июл '18 в 20:28
2 ответа

Может ли этот параллельный цикл вызвать гонку данных?

У меня есть std::vector перед параллельным циклом std::pair<Object, bool>, Все bools инициализируются true, Цикл примерно такой: for (int x = 0; x < xMax; ++x) // can parallelising the loop in x cause a data race? for (int y = 0; y < yMa…
25 авг '15 в 20:01
1 ответ

Безопасно ли std::vector::clear()- внутренний вектор двумерного векторного потока?

Допустим, у меня есть объект threadWork инициализируется как: vector< vector<myType> > threadWork(N_THREADS, vector<myType>()); Я тогда развернуть N_THREADS потоки, каждый из которых выполняет запись через vector::push_back()с отде…
06 авг '17 в 21:16
4 ответа

Segfault происходит при попытке синхронизации очереди

Я изучаю многопоточность, и я хотел смоделировать проблему производителя-потребителя (используя семафор, если я могу это так назвать). У меня есть класс, который содержит очередь, производитель вставляет в очередь, а потребитель получает его и печат…
15 мар '17 в 20:57
0 ответов

Инструментарий многопоточности Intel Pin: Как обеспечить доступ только к разделяемым переменным между потоками?

Я использую Intel Pin для динамического инструментирования многопоточных программ с целью обнаружения некоторой гонки данных. Я инструктирую инструкции чтения / записи памяти, чтобы собрать следы памяти во время выполнения и затем проанализировать ж…
1 ответ

Не могу понять go test -race: RACE: DATA WARNING трассировка стека

Я столкнулся с предупреждением DATA RACE во время тестирования моего проекта и задавался вопросом, будет ли кто-нибудь достаточно любезен, чтобы помочь мне разобраться в проблеме. В прошлом я никогда не пытался протестировать рутинные процедуры, и м…
24 фев '19 в 14:44
2 ответа

Защищены ли атомные объекты от расы?

Насколько я знаю, это не так. Атомные объекты свободны от гонок данных, но они все еще могут страдать от гонок: два потока могут начинаться в непредсказуемом порядке, что делает результат программы недетерминированным. Совместно используемые данные …
1 ответ

Разрешение гонки данных в iOS Swift

У меня есть NetworkProvider, который будет делать вызов API непрерывно, а также, как только я получу данные, я буду обновлять идентификатор пользователя. В то же время я получу доступ к идентификатору пользователя из других функций. Это условие гонк…
25 сен '17 в 21:42
1 ответ

Путаница в определении гонки данных

Гонка данных происходит, когда в программе есть два обращения к памяти, где оба: цель в том же месте выполняются одновременно двумя потоками не читает не являются операциями синхронизации Это определение взято из, которое заимствует его из исследова…
0 ответов

Одиночная запись - совместное использование буфера большой памяти без блокировок

Давайте предположим, что в качестве кадрового буфера используется большой буфер памяти, который постоянно записывается потоком (или даже несколькими потоками, гарантируя, что никакие два потока не будут одновременно писать один и тот же байт). Эти з…
0 ответов

Захват локального объекта в лямбде по ссылке может вызвать гонку данных или нет?

У меня есть некоторый кусок кода, который вызывает ошибку при запуске с Thread Sanitizer на: bool Renderer::render(std::optional<int32_t> cancellationToken) { const RenderWatcher renderWatcher{cancellationToken}; ... return Render(... [&re…
24 фев '18 в 08:39
1 ответ

Разрешено ли это преобразование компилятора?

Рассмотрим этот код, где x а также y целые числа: if (x) y = 42; Разрешено ли следующее преобразование компилятора? int tmp = y; y = 42; if (!x) y = tmp; контекст: Это из часто задаваемых вопросов Бьярна Страуструпа: // start with x==0 and y==0 if (…
25 авг '17 в 15:42
0 ответов

Создать дамп ядра из го тестов

Я столкнулся с состоянием гонки данных, для которого я написал тесты. Состояние гонки наступает один раз в несколько запусков. Можно ли получить дамп ядра этого теста, чтобы проверить различные программы?
1 ответ

Избегайте гонок данных с Голангом

У меня есть jobWorker, который должен иметь дело с заданиями, и у этого работника была запись, чтение, запись файла журнала, получение API и некоторые вычисления данных. var mystruct strcut{} func worker(v) { Get data from database ... Update databa…
17 авг '17 в 06:43
2 ответа

Обработка нескольких гонок данных с вялым ботом

Я работаю над слабым ботом в качестве моего первого проекта golang, и хотя функциональность этой конкретной команды бота работает отлично, она может случайно запаниковать и выдать ошибку. Я смог определить, что у меня идет гонка данных, в частности,…
13 фев '18 в 14:57
1 ответ

Можно ли запустить поток в C# с его собственными переменными, которые не обновляются при последующих вызовах?

Я создал класс с методом, который вызывается различными потоками (вне класса). Перед вызовом метода потоки обновляют свой собственный набор параметров, обновляя словарь свойств в классе. Я параметризирую метод, выбирая соответствующий элемент из сло…
28 июн '18 в 09:56
1 ответ

Что вызывает эту гонку данных?

Почему этот код вызывает гонку данных? Я уже использовал атомный добавить. package main import ( "sync/atomic" "time" ) var a int64 func main() { for { if a < 100 { atomic.AddInt64(&a, 1) go run() } } } func run() { <-time.After(5 * time.S…
08 янв '19 в 11:02
0 ответов

Происходит ли гонка данных при использовании cgo?

Goroutines работает в другом стеке для cgo и go: C ничего не знает о соглашении о вызовах Go или растущих стеках, поэтому обращение к коду C должно записывать все детали стека goroutine, переключаться на стек C и запускать код C, который не знает, к…
23 фев '19 в 03:42