Сомнения в том, что сообщения перезаписываются? - PullRequest
0 голосов
/ 25 октября 2011

Предполагается, что сообщение поступает от генератора внешнего источника с интервалом в 1 секунду. У меня есть две функции-обработчика, которые вызываются всякий раз, когда это сообщение приходит на основании полей сообщения

У меня естьфункция, которая создает подпрограмму потока с именем WriteSM.

рассмотрим сообщение из 2 байтов, имеющее 2 поля 1) data 2Type

У нас есть две функции-обработчика для каждого из полей, которыепоказано ниже

void HandlerforData(char data)

void handlerforType(char Type)

            /*This is the sample piece of code*/
            char buffer[4];/*Global buffer*/
            int index = 0;
            static int flag = 0;/*A global static flag*/
            void HandlerforData(char data);
            void WriteSM(void);
            void handlerforType(char Type);


            /*Two handler functions*/
            void HandlerforData(char data)
            {

                   buffer[index] = data;
            }
            void handlerforType(char Type)
            {

              buffer[index+1] = type;
                   buffer[index+3] = '\0';/*Null terminated the string*/
              index = 0;
                   flag = 1
       }


          void WriteSM(void)
          {

                    while(1)
                    {
                         if(flag ==1)
                         {
                             /*Opens a shared memory and writes to the shared memory*/
                             flag =0/*Reset the flag*/
                         }
                    }                      

           }

Если мое сообщение приходит с интервалом в 1 секунду, как я могу гарантировать, что буфер не будет перезаписан следующим кадром сообщения?

Пожалуйста, вернитесь кмне, если у вас есть какие-либо проблемы

Спасибо и привет Мэдди

1 Ответ

0 голосов
/ 25 октября 2011

Полагаю, это многопоточное приложение, в следующий раз вам определенно следует предоставить больше информации, однако попробуйте Google взаимно исключить в отношении критических разделов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...