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

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
16.10.2011, 11:09
    #37483991
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не доходит зачем нужен Thread Local Storage
News_aThreadName я храню в TLS, а ThreadValue - просто как поле класса. Что то не заметно.
...
Рейтинг: 0 / 0
16.10.2011, 11:36
    #37484002
News_a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не доходит зачем нужен Thread Local Storage
наверное неточно написал, ThreadName тоже храню как поле класса, но я же его сначала сохраняю в TLS, а потом достаю оттуда.

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

Если не понимаете зачем это нужно - просто не используйте. Как всегда вариантов решения задач - множество, это лишь один из способов. Иногда удобный, иногда нет.
...
Рейтинг: 0 / 0
16.10.2011, 18:51
    #37484263
News_a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не доходит зачем нужен Thread Local Storage
спорный совет. А как же самообразование? Правильнее узнать, понять что для чего, а потом уже решать нужно это или нет.
Заметку прочитал. С одной стороны все понятно, но с другой стороны ответа на вопрос все равно нет. В чем преимущество использования TLS перед полями класса, функцию которого запускаем в thread? Оба варианта подходят "для хранения специфических данных". Ну зачем то придумали этот TLS!
...
Рейтинг: 0 / 0
16.10.2011, 19:39
    #37484278
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не доходит зачем нужен Thread Local Storage
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
18.10.2011, 20:13
    #37487717
Думан Константин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не доходит зачем нужен Thread Local Storage
News_aспорный совет. А как же самообразование?
Я имел в виду не использовать в продакшене. Баловаться то всегда пожалуйста, если время позволяет.
...
Рейтинг: 0 / 0
22.10.2011, 23:19
    #37493950
trуц
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не доходит зачем нужен Thread Local Storage
например надо реализовать что-то по аналогии GetLastError из WinApi
...
Рейтинг: 0 / 0
24.10.2011, 10:05
    #37494753
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не доходит зачем нужен Thread Local Storage
News_aВ чем преимущество использования TLS перед полями класса, функцию которого запускаем в thread? Оба варианта подходят "для хранения специфических данных". Ну зачем то придумали этот TLS!
Видишь ли, секрет в том, что в thread запускаем вовсе не "функцию класса". В thread запускается просто standalone функция. Если потом кто-то написал обёртку, делающую вид, что в потоке запускается функция класса - в этом нет ничего плохого. А вот например для того, чтобы передать в настоящую поточную функцию указатель на "функцию класса" вместе с указателем на объект, TLS среди прочего и нужен :)
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Не доходит зачем нужен Thread Local Storage / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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