The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Threads, !*! Vanka, 05-Мрт-03, 17:24  [смотреть все]
  • RE: Threads, !*! Max V. Zinal, 22:53 , 08-Мрт-03 (1)
    Код странноватый, ну да Бог автору судья.
    Если доступ к данным массива осуществляют два потока
    (или более - главное, больше одного) и хотя бы один
    из потоков производит изменение данных, настоятельно
    рекомендуется разбить каждую из потоковых функций
    на набор атомарных операций, а саму атомарность
    обеспечить столь немилыми Вашему сердцу мьютексами
    али иными синхронизационными объектами. Современные
    компиляторы C и процессоры *практически никогда* не
    обеспечивают атомарность "элементарных" с точки зрения
    кодера операций, в том числе и целочисленной арифметики.
    Сие сделано не из вредности, а для сохранения достаточного
    пространства для всяческих оптимизаций.
    Так, например, если один поток массив заполняет,
    а другой "недозаполненный" массив читает, может
    получиться так, что потоком-"читателем" будет
    извлечён из массива элемент, которого по "человеческой"
    логике работы программы там вообще никогда не должно
    было появиться, но который возник там вследствие частично
    выполненной операции.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру