Безопасен ли поток доступа std :: map, если итераторы к нему никогда не становятся недействительными

Я использую класс IsNullConverter в своем проекте, и это сработало для меня. вот код для него в c #, создайте папку с именем Converter и добавьте этот класс в эту папку, поскольку используемый триггер не поддерживает значение, а не null, а IsNullConverter просто делает это

 public class IsNullConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return (value == null);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new InvalidOperationException("IsNullConverter can only be used OneWay.");
    }
}

add пространство имен в файле xaml.

xmlns:Converters="clr-namespace:TymeSheet.Converter"

означает, что

xmlns:Converters="clr-namespace:YourProjectName.Converter"

использует эту строку под ресурсами, чтобы сделать ее доступной через код xaml

<Converters:IsNullConverter x:Key="isNullConverter" />

здесь - код xaml, я использовал здесь триггер, поэтому всякий раз, когда элемент выбирается в поле со списком, видимость вашего текста становится ложной.

<TextBlock Text="Select Project" IsHitTestVisible="False" FontFamily="/TimeSheet;component/Resources/#Open Sans" FontSize="14" Canvas.Right="191" Canvas.Top="22">
                        <TextBlock.Resources>
                            <Converters:IsNullConverter x:Key="isNullConverter"/>
                        </TextBlock.Resources>
                        <TextBlock.Style>
                            <Style TargetType="TextBlock">
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding ElementName=ProjectComboBox,Path=SelectedItem,Converter={StaticResource isNullConverter}}" Value="False">
                                        <Setter Property="Visibility" Value="Hidden"/>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </TextBlock.Style>
                    </TextBlock>
2
задан Jarod42 7 March 2019 в 02:34
поделиться

1 ответ

Безопасен ли поток доступа std :: map, если итераторы к нему никогда не аннулируются

Это не является достаточным предварительным условием. Вставки не делают недействительными итераторы, но создают гонку с другими потоками доступа.

Идея состоит в том, что я предварительно заполняю эту карту

Это кажется достаточным. Безопасно одновременно читать (находить, проходить и т. Д.) Стандартную карту из нескольких потоков, если ее не изменяет ни один поток.

, и эти обращения могут изменить значение std::atomic

Доступ, даже запись атомарного объекта, также является поточно-ориентированным. Но имейте в виду, что последовательность нескольких атомарных операций не является атомарной в целом.

0
ответ дан eerorika 7 March 2019 в 02:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: