Всем привет!
есть код
public class AppRequestContext{
public int ExecTimeoutMs = 10 * 60 * 1000;
bool _IsApiRequest;
static readonly int _ExecTimeoutMsForApiReqUnderHighCPU = 40 * 000;
public bool IsApiRequest {
get { return _IsApiRequest; }
internal set {
if (value) {
if (SysUtils.CurrentCPULoad > 78) {
ExecTimeoutMs = _ExecTimeoutMsForApiReqUnderHighCPU;
} else {
//время макс. работы - 5мин.
ExecTimeoutMs = 300000;
}
}
_IsApiRequest = value;
}
}
}
при выполнении такого
appCtx.IsApiRequest = true; // appCtx - инстанс класса AppRequestContext
if (appCtx.ExecTimeoutMs==0)
Logger.LogAssert("shit happens");
иногда логируется ассерт.. причем ассерты бывают только когда система под нагрузкой.. как такое возможно?
работа с контекстом точно однопоточная.
предположительно такое стало после замены
static readonly int _ExecTimeoutMsForApiReqUnderHighCPU = 40000;
на
static readonly int _ExecTimeoutMsForApiReqUnderHighCPU = 40 * 000;
но ведь это же херь какая-то..