Are we planning to get this change to mainline? On Tue, Nov 27, 2018 at 8:15 AM 최우제 (Uze Choi) <uzc...@samsung.com> wrote:
> Sorry, Let me abort point 2 below, only single execution is guaranteed > from the code. > > *2.There are two points calling OCProcess() periodically which is > InProcServerWrapper::processFunc() and > InProcClientWrapper::listeningFunc().* > > * Two entities will receive the signal and race to execute the > OCProcess() and they are locked with recursive mutex. This may need another > structure change.* > > > > BR, Uze Choi > > *From:* iotivity-dev@lists.iotivity.org [mailto: > iotivity-dev@lists.iotivity.org] *On Behalf Of *최우제 (Uze Choi) > *Sent:* Tuesday, November 27, 2018 10:58 AM > *To:* 'Ravee'; iotivity-dev@lists.iotivity.org > *Subject:* Re: [dev] Thread wake up every 10ms > > > > Apply Wait and signal awake is my suggestion. > > Before wait, it need to check the receive queue and awake from wait when > received message happen. > > > > But there three point to consider. > > 1. From OCProcess some internal call exists which requires timeout check. > This mean OCProcess should be called after each timeout happens. > > This may requires timeout management logic as like IoTivty-Lite with > returning remaining timeout period from OCProcess(). > > 2.There are two points calling OCProcess() periodically which is > InProcServerWrapper::processFunc() and InProcClientWrapper::listeningFunc(). > > Two entities will receive the signal and race to execute the > OCProcess() and they are locked with recursive mutex. This may need another > structure change. > > 3. OCProcess() and other OC API call are synchronized with recursive > mutex. I don’t know detail if this may requires additional consideration. > > > > ts = OCProcess(); > pthread_mutex_lock(&mutex); > > if (is_queue_empty()) { > if (ts) { > pthread_cond_wait(&cv, &mutex); > } else { > pthread_cond_timedwait(&cv, &mutex, &ts); > } > > } > > > > BR, Uze Choi > > *From:* iotivity-dev@lists.iotivity.org [mailto: > iotivity-dev@lists.iotivity.org] *On Behalf Of *Ravee > *Sent:* Friday, November 23, 2018 11:04 PM > *To:* iotivity-dev@lists.iotivity.org > *Subject:* Re: [dev] Thread wake up every 10ms > > > > Any suggestions, or patches to try async mechanism instead of polling? > > > > On Fri, Nov 23, 2018 at 5:37 PM Raveendranath Kondrakunta < > raveendranath.kondraku...@gmail.com> wrote: > > Hi, > > > > I found a function where the thread wakes up every 10ms, On IoT devices, > we except to save power, however this function is waking up every 10ms and > defeating the purpose. We need to relook at the design here. > > > > void InProcServerWrapper::processFunc() > > { > > auto cLock = m_csdkLock.lock(); > > while(cLock && m_threadRun) > > { > > OCStackResult result; > > > > { > > std::lock_guard<std::recursive_mutex> lock(*cLock); > > result = OCProcess(); > > } > > > > if(OC_STACK_ERROR == result) > > { > > oclog() << "OCProcess failed with result " << result > <<std::flush; > > // ...the value of variable result is simply ignored for > now. > > } > > > > std::this_thread::sleep_for(std::chrono::milliseconds(10)); > > } > > } > > -Ravee > > > > > > > > > -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#10029): https://lists.iotivity.org/g/iotivity-dev/message/10029 Mute This Topic: https://lists.iotivity.org/mt/28292450/21656 Group Owner: iotivity-dev+ow...@lists.iotivity.org Unsubscribe: https://lists.iotivity.org/g/iotivity-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-