> On June 29, 2014, 3:31 a.m., Matthew Dawson wrote:
> > I'm not sure about moving the warning about immutable files to only happen 
> > on the main thread, as it is possible that an application may use it 
> > KSharedConfig on an alternate thread only.
> > 
> > As this is mainly an optimization, I think the best thing is to just move 
> > to using the load() function on the atomic integer, as I believe that 
> > doesn't require processors to synchronize, and won't limit optimizations.  
> > Otherwise, I'm fine with the immutable files as that is simpler code wise.  
> > Thoughts?
> 
> David Faure wrote:
>     Well, I'm not sure we'd expect secondary threads to pop up a dialog 
> though (as KConfig::isConfigWritable(true /*warn user*/) does, via 
> QProcess("kdialog")).
>     
>     This bit (the warnUser code) isn't really about an optimization, but 
> about doing that stuff only in the main thread, where GUI apps initialize the 
> main config object and where user-interaction is expected.
> 
> Matthew Dawson wrote:
>     I wouldn't either, and I'd except most code access its main config on a 
> primary thread first.  I'm just thinking for those 1% of cases, that cause 
> all the trouble.
>     
>     When I mentioned about an optimization, I meant is that the reason for 
> this RR, not the point of the user warning.  With the relaxed loading of the 
> atomic int, I don't think there is much, if any of a performance hit.  I 
> don't think the code complexity is too bad to handle that 1% either.  Is 
> there any other reason for this change?  Otherwise, I'd prefer to be safe.
>     
>     Otherwise, this patch looks good with the latest changes.

This patch wasn't initially about optimization, but about fixing the behavior 
for the main thread vs other threads. I think the final version of the patch 
makes sense:
* caching, including mainConfig -> for all threads
* clearing cache when qstandardpaths test mode gets enabled -> for all threads 
because it's related to the above, even if unlikely to happen in other threads
* warning the user with a kdialog -> main thread, because this is a GUI 
operation, which is only expected in the main thread (even if it's technically 
possible to have it in other threads, since it's delegated to a separate 
process).

This patch is definitely not about improving performance, but about correctness 
:)


- David


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/118985/#review61157
-----------------------------------------------------------


On June 29, 2014, 1:55 p.m., David Faure wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/118985/
> -----------------------------------------------------------
> 
> (Updated June 29, 2014, 1:55 p.m.)
> 
> 
> Review request for KDE Frameworks and Matthew Dawson.
> 
> 
> Repository: kconfig
> 
> 
> Description
> -------
> 
> KSharedConfig: move mainConfig and wasTestEnabled to the thread storage.
> 
> This enables the mainConfig optimization in all threads,
> and ensures the user warning only happens in the main thread.
> 
> The test-mode-enabled logic is only really useful in the main thread,
> but it's simpler to just do it in all threads.
> 
> REVIEW: 118985
> 
> 
> Diffs
> -----
> 
>   autotests/kconfigtest.cpp a8482b7099df5921909830082d758dc3095e3241 
>   src/core/ksharedconfig.cpp b7d155d5893502921d35d7dd971188b6a93a0620 
> 
> Diff: https://git.reviewboard.kde.org/r/118985/diff/
> 
> 
> Testing
> -------
> 
> no regression in "make test" in kconfig; still debugging races in helgrind 
> threadtest (in kio).
> 
> 
> Thanks,
> 
> David Faure
> 
>

_______________________________________________
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel

Reply via email to