|
|
|
классы и потоки
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Интересно ваше мнение по следующему вопросу: стоит ли потоковые функции делать экзмеплярами классов и при вызове передать им указать this для доступа к данных классам либо писать отдельную потоковую функцию, которая работает с классом (данные в классе допустим могли бы быть защищены критическими секциями)? Я обычно делаю потоковую функцию статическим методом класса: class Archiver { static DWORD CalculateDataThread(LPVOD param); static DWORD WriteToDbThread(LPVOID param); }; Некоторые используют ключевое слово __stdcall. Чем лучше объявление функции с этим ключевым словом? static UINT __stdcall AcceptThread(LPVOID); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2007, 11:04 |
|
||
|
классы и потоки
|
|||
|---|---|---|---|
|
#18+
Я разницы не вижу? хотя для компилятора она есть и некоторые даж варнингами кидаютсяю Строго говоря они правы, поскольку функция должна быть с С связыванием (extern C) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2007, 11:11 |
|
||
|
классы и потоки
|
|||
|---|---|---|---|
|
#18+
OLEG_2005Интересно ваше мнение по следующему вопросу: стоит ли потоковые функции делать экзмеплярами классов и при вызове передать им указать this для доступа к данных классамесли это по идее функция-член, то стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2007, 14:37 |
|
||
|
классы и потоки
|
|||
|---|---|---|---|
|
#18+
class Archiver { public: bool Start(); bool Stop(); private: static DWORD CalculateDataThread(LPVOD param); static DWORD WriteToDbThread(LPVOID param); //Далее некие данные //массив входных данных //рассчитанные данные //очередь, из которой данные из памяти пишутся в БД }; По вашему мнению такая реализация является правильной и стоит ли для потоковых функций использовать __stdcall? Может быть потоковый функции вынести за пределы класса. Хотелось бы узнать кто как делает в подобных случаях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2007, 15:03 |
|
||
|
классы и потоки
|
|||
|---|---|---|---|
|
#18+
OLEG_2005 пишет: > Интересно ваше мнение по следующему вопросу: стоит ли потоковые функции > делать экзмеплярами классов и при вызове передать им указать this для > доступа к данных классам либо писать отдельную потоковую функцию, > которая работает с классом (данные в классе допустим могли бы быть > защищены критическими секциями)? Я обычно делаю потоковую функцию > статическим методом класса: > class Archiver > { > static DWORD CalculateDataThread(LPVOD param); > static DWORD WriteToDbThread(LPVOID param); > }; > > Некоторые используют ключевое слово __stdcall. Это абсолютно все равно. Если вам удобнее иметь ее мембером, то и хорошо. Главное, чтобы функция не была бы нестатическим мембером. Чем лучше объявление > функции с этим ключевым словом? Ничем. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2007, 15:41 |
|
||
|
классы и потоки
|
|||
|---|---|---|---|
|
#18+
что-то я не понял, потоковая функция – это та, которая передаётся в CreateThread? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2007, 15:56 |
|
||
|
классы и потоки
|
|||
|---|---|---|---|
|
#18+
Можно сделать класс потока, который будет иметь свою статическую функцию. Ему будет передоваться указатель на класс и на его функцию. Класс потока будет создавать поток запуская свою статическую функцию, с параметром - указатель на свой класс. Далее, в функции, параметр приводится к указателю, берется укзатель на требуемый класс и вызывается его функция: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2007, 16:07 |
|
||
|
классы и потоки
|
|||
|---|---|---|---|
|
#18+
maXmoчто-то я не понял, потоковая функция – это та, которая передаётся в CreateThread? Да под потоковой функцией, я понимаю функцию, которая передаётся в CreateThred? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2007, 16:32 |
|
||
|
классы и потоки
|
|||
|---|---|---|---|
|
#18+
AkhМожно сделать класс потока, который будет иметь свою статическую функцию. Ему будет передоваться указатель на класс и на его функцию. Класс потока будет создавать поток запуская свою статическую функцию, с параметром - указатель на свой класс. Далее, в функции, параметр приводится к указателю, берется укзатель на требуемый класс и вызывается его функция: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Спасибо за идею. Да, интересная мысль мне это в голову не приходило. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2007, 17:04 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34463951&tid=2029035]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
178ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 482ms |

| 0 / 0 |
