Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2013, 23:50   #1
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию многопоточность без синхронизации

Нужно отсортировать список файлов, который хранится в TList.
Допускаются ошибки в отсортированом списке.
Но у меня иногда возникает invalid pointer operation
И я не пойму почему
Код:
DWORD WINAPI THreadFucnt(LPVOID lpParam)
{

	mes *t = (mes *)lpParam;


        for (int i=0; i< t->n; ++i)
        {
                for (int j=0; j<t->n-1; ++j)
                {
                        if (t->list->Strings[j] > t->list->Strings[j+1])
                        {
                             String temp = t->list->Strings[j];
                             t->list->Strings[j] =   t->list->Strings[j+1];
                             t->list->Strings[j+1] = temp;

                        }
                }
                Sleep(1);
        }


	return 0;
}
Pein95 вне форума Ответить с цитированием
Старый 05.11.2013, 07:54   #2
Nuklon
Форумчанин
 
Аватар для Nuklon
 
Регистрация: 05.04.2012
Сообщений: 134
По умолчанию

Цитата:
Но у меня иногда возникает invalid pointer operation
У тебя TList потокобезопасен? Если нет, тогда будет возникать такая ошибка. Да и проект должен быть собран с дефайном _MT многопоточная сборка библиотеки C run-time library, конечно если объект String и TList юзает библиотечные функции. Проще написать свой список, а память выделять HeapAlloc/HeapReAlloc освобождать HeapFree, по умолчанию использовать флаг-0 чтобы куча не была поврежденна при одновременном выделение памяти из нескольких потоков, но этого не достаточно лучше всё таки обернуть выделение и освождение памяти критической секцией со спин локом...
Nuklon вне форума Ответить с цитированием
Старый 06.11.2013, 12:18   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

если это C+++ Builder то, там TList обладает своим Sort и Call-Back-функцией для сранения двух элементов.
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Синхронизации полей в бд на php erwerwe PHP 4 15.03.2013 22:00
Объекты синхронизации f.hump Windows 0 03.09.2012 15:58
Автоматизация синхронизации tim900 Помощь студентам 2 14.02.2012 14:45
Метод синхронизации kos1nus PHP 4 08.09.2011 08:42
Проблема синхронизации. beda Microsoft Office Word 3 30.06.2010 13:37