powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Не доходит зачем нужен Thread Local Storage
9 сообщений из 9, страница 1 из 1
Не доходит зачем нужен Thread Local Storage
    #37483974
News_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Читаю в инете описание, например вот:

The Thread Local Storage (TLS) functions let you create global variables that refer to different data depending on the thread from which the variables are referenced

Смысл понятен, но непонятно зачем это надо.
Например:
Код: plaintext
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.
32.
33.
34.
35.
36.
37.
namespace ConsoleApplication1
{
    class Program
    {
        public static LocalDataStoreSlot slot = Thread.GetNamedDataSlot("TestSlot");

        static void Main(string[] args)
        {
            Thread thr1 = new Thread(new test("thread 1 ", 1).DoProcess);
            thr1.Start();
            Thread thr2 = new Thread(new test("thread 2 ", 2).DoProcess);
            thr2.Start();
        }
    }

    class test
    {
        public int ThreadValue;
        public string ThreadName;

        public test(string _ThreadName, int _ThreadValue)
        {
            ThreadValue = _ThreadValue;
            ThreadName = _ThreadName;
        }

        public void DoProcess()
        {
            Thread.SetData(Program.slot, ThreadName);
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine("{0} : {1} - {2}", i, Thread.GetData(Program.slot), ThreadValue);
                Thread.Sleep(1000);
            }
        }
    }
}
ThreadName я храню в TLS, а ThreadValue - просто как поле класса. Эффект одинаков.
Что дает использование TLS?
...
Рейтинг: 0 / 0
Не доходит зачем нужен Thread Local Storage
    #37483991
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
News_aThreadName я храню в TLS, а ThreadValue - просто как поле класса. Что то не заметно.
...
Рейтинг: 0 / 0
Не доходит зачем нужен Thread Local Storage
    #37484002
News_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
наверное неточно написал, ThreadName тоже храню как поле класса, но я же его сначала сохраняю в TLS, а потом достаю оттуда.

Аналогичный пример на видео:
http://video.yandex.ru/#search?text=Thread%20Local%20Storage&where=all&id=16129752-05-12
...
Рейтинг: 0 / 0
Не доходит зачем нужен Thread Local Storage
    #37484217
Думан Константин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прочтите эту заметку .

Если не понимаете зачем это нужно - просто не используйте. Как всегда вариантов решения задач - множество, это лишь один из способов. Иногда удобный, иногда нет.
...
Рейтинг: 0 / 0
Не доходит зачем нужен Thread Local Storage
    #37484263
News_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спорный совет. А как же самообразование? Правильнее узнать, понять что для чего, а потом уже решать нужно это или нет.
Заметку прочитал. С одной стороны все понятно, но с другой стороны ответа на вопрос все равно нет. В чем преимущество использования TLS перед полями класса, функцию которого запускаем в thread? Оба варианта подходят "для хранения специфических данных". Ну зачем то придумали этот TLS!
...
Рейтинг: 0 / 0
Не доходит зачем нужен Thread Local Storage
    #37484278
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
News_aНу зачем то придумали этот TLS!
TLS придумали совсем не для dotnet.
http://msdn.microsoft.com/en-us/library/6yh4a9k1.aspx

дабы статик в рамках Thread организовать
Код: plaintext
1.
__declspec( thread ) int tls_i =  1 ;
...
Рейтинг: 0 / 0
Не доходит зачем нужен Thread Local Storage
    #37487717
Думан Константин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
News_aспорный совет. А как же самообразование?
Я имел в виду не использовать в продакшене. Баловаться то всегда пожалуйста, если время позволяет.
...
Рейтинг: 0 / 0
Не доходит зачем нужен Thread Local Storage
    #37493950
trуц
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
например надо реализовать что-то по аналогии GetLastError из WinApi
...
Рейтинг: 0 / 0
Не доходит зачем нужен Thread Local Storage
    #37494753
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
News_aВ чем преимущество использования TLS перед полями класса, функцию которого запускаем в thread? Оба варианта подходят "для хранения специфических данных". Ну зачем то придумали этот TLS!
Видишь ли, секрет в том, что в thread запускаем вовсе не "функцию класса". В thread запускается просто standalone функция. Если потом кто-то написал обёртку, делающую вид, что в потоке запускается функция класса - в этом нет ничего плохого. А вот например для того, чтобы передать в настоящую поточную функцию указатель на "функцию класса" вместе с указателем на объект, TLS среди прочего и нужен :)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Не доходит зачем нужен Thread Local Storage
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]