我有许多任务正在同时运行异步Web请求。它们都引用标题字符串,其中包含发出成功请求所需的授权令牌。在一段时间之后,令牌到期并且必须生成新的令牌以便将来的Web请求起作用。为此,每个Web请求都有一个后备,如果它返回未经授权的错误,它将发送一个新的令牌请求,然后将其应用于全局令牌字符串,然后重新运行该请求。
想象一下,我有任务A& B执行异步请求。它们都收到未经授权的请求错误并尝试生成新令牌,但是任务A在任务B之前收到它,因此已经开始请求新令牌。
确保整个操作是线程安全的最佳方法是什么?因此,当任务B去请求令牌时,它意识到任务A已经在执行此过程,因此任务B不再尝试发送令牌请求,而只是等待任务A完成并返回一个值他们都可以使用。
我想过只使用一个锁,但是任务B只会等待重新生成令牌,而不会意识到它可以使用最近重新生成的任务A值。
答案 0 :(得分:0)
我只是通过使用锁来解决这个问题。我极度想到我最初的做法。