JeDay (04.11.2005 18:02, просмотров: 1) ответил Jean Labrosse на Да, сообщения передаются по указателю. То есть необходимо выделить память под сообщение, затем OSQPost(), затем в задаче которая ждет ( OSQPend() ) освободить память после обработки.
Ответ: Я и так преобразовываю с void*.
А на счет выделения памяти под сообщение...
У меня такой вопрос:
Если я объявил массив А локально(т.е. не через new и delete), посылаю в очередь сообщений, у которого найвысший приоритет, указатель на этот массив. Затем тут же перезаписываю массив А другими данными. После перепланировки другой поток получает сообщение(указатель на массив А) и вычитывает данные, которые уже изменены.
// Task 1
INT8U *A, err;
A = "Hello";
...
err = OSQPost(evQ, (void*)A);
A = "Bad";
//------------
// Task2
INT8U *msg, err;
...
msg = OSQPend(evQ, 0, &err);
//------------------
Чему равно msg ? "Hello" или "Bad" ?
Ответьте на этот вопросик плиз.