Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/49: Рейтинг темы: голосов - 49, средняя оценка - 4.90
3 / 3 / 0
Регистрация: 09.07.2010
Сообщений: 24

Критическая секция

26.08.2010, 12:22. Показов 10167. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Подскажите пожалуйста: в коде ниже если один поток пишет в file1.txt, другой не сможет начать запись в file2.txt, если критическая секция использует один и тот же объект?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
object syncObj;
void WriteInFile1(string line)
{
    lock (syncObj)
    {
          StreamWriter LogStream;
          using (LogStream = new StreamWriter("file1.txt")
          {
                LogStream.WriteLine(line);
          }
          LogStream.Close();
    }
}
 
void WriteInFile2(string line)
{
    lock (syncObj)
    {
          StreamWriter LogStream;
          using (LogStream = new StreamWriter("file2.txt")
          {
                LogStream.WriteLine(line);
          }
          LogStream.Close();
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.08.2010, 12:22
Ответы с готовыми решениями:

Критическая секция
Код: using System; using System.Threading; namespace Abstract { class MyClass {

Критическая секция
Есть процесс в нем создается 2 потока, проблема в том, что когда один из потоков находится в критической секции и если его уничтожить или...

Критическая секция
Очень срочно,помогите пожалуйста,на Сях,реализовать работу бензоколонки - бензин 80,92,95,98,Дизель - разлив бензина автомобилям через...

1
49 / 49 / 15
Регистрация: 13.08.2010
Сообщений: 160
26.08.2010, 12:52
да все имено так, есле хочеш запустить оба метода асинхронно локай line. Но есть трабл, если line одинаковый по контэнту но разный по рэференсу будет эксепшин - решение:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Dictionary<String, Object> lines = new Dictionary<String, String>();
Object getLockObject(string line)
{
   if(!lines.Contains(line)) lines.Add(line, line);
   return lines[line];
}
void WriteInFile1(string line)
{
    lock (getLockObject(line))
    {
          StreamWriter LogStream;
          using (LogStream = new StreamWriter(line)
          {
                LogStream.WriteLine(line);
          }
          LogStream.Close();
    }
}
 
void WriteInFile2(string line)
{
    lock (getLockObject(line))
    {
          StreamWriter LogStream;
          using (LogStream = new StreamWriter(line)
          {
                LogStream.WriteLine(line);
          }
          LogStream.Close();
    }
}
с траблом сам сталкивался, кто знает решение полутше напишите плиз

Добавлено через 54 секунды
P.S. извеняйте за ошибки, писал не в студии

Добавлено через 4 минуты
блин извени завтыкал думал line тебя, это пас а не строка без записи, в твоем случае можно обойтись без лока, и все распаралелится, лок только зделает распаралеливание безполезным, методы вызвутся один за другим
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.08.2010, 12:52
Помогаю со студенческими работами здесь

Критическая секция
такая задача. есть глобальный указатель на структуру. в main -е динамически выделяю память под массив структур. Хочу чтобы у каждой...

Критическая секция
Требуется применить критическую секцию для процессов через разделяемую память. Ниже привел участок кода, который это делает при условии...

Критическая секция
Привет! Вот я уже как дня 2 маюсь с критической секцией CriticalSection.Enter; CS.Enter; Inc(Acc); if Acc &lt;...

Критическая секция
Ребята помогите пожалуйста, надо сделать 5 потоков с помощью критической секции, незнаю как!!! пытался что-то сделать но ничего путного не...

Потоки и критическая секция!
Почему потоки проходят 14 раз, а не 10, как указано в MaxCount?????? Помогите с ответом пожалуйста! Написать программу, главный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru