Le 25/08/2015 23:34, Dave Reisner a écrit :
On Tue, Aug 25, 2015 at 09:21:50PM +0200, Guillaume wrote:
To not block the GUI, I run trans_commit function in a g_thread and I can't use SIGINT signal. I have 
no way to correctly stop curl process. I propose to look for a particular value to do it as 
transaction functions do with TRANS_STATE_INTERRUPTED.Dave Reisner <[email protected]> a 
écrit :On Aug 25, 2015 7:04 AM, "Guillaume Benoit" <[email protected]> wrote:

Please don't top post.

Presumably, you can't use SIGINT because you can't guarantee which
thread the signal is delivered to. You need to properly guard against
this situation by blocking SIGINT on threads which aren't the caller of
trans_commit. With only 1 thread not masking SIGINT, the linux kernel
will guarantee delivery to this thread.

http://stackoverflow.com/a/11679770

Is this correct? Or is there some other reason that you can't rely on
signal delivery as an interrupt mechanism?

d

Yes, maybe I can do that but won't it be better for a library to not have to use signals ? Knowing that alpm_trans_commit function runs download then packages transaction, won't it be clearer to have a unique function to cancel the process ? alpm_trans_interrupt function can already be used to cancel package transaction, my idea is to complete it to also cancel downloads.
Guillaume.

Reply via email to