14:55 <+ddnet-discord> @HMH your threadsafe queue doesn't look threadsafe to me btw 14:56 <+ddnet-discord> and I don't know why it needs to be parametric over its container and the smart pointer it uses 14:56 <+ddnet-discord> can't it just store the element type directly 14:56 <+ddnet-discord> that might be true, I guess you can enlighten me then ? 14:57 <+ddnet-discord> If it stores the element type directly I have found that this creates issues with ownership, thus the smartpointers 15:01 <+ddnet-discord> in that case, can't you store smartpointers in the queue instead? 15:01 <+ddnet-discord> like instead of queue, you just use queue> if you want it behind a unique_ptr? 15:02 <+ddnet-discord> I see 15:02 <+ddnet-discord> re thread-unsafety: 15:02 <+ddnet-discord> e.g. look at the `Front` implementation 15:02 <+ddnet-discord> it takes the lock, returns the reference and then releases the lock 15:03 <+ddnet-discord> but the reference can become invalid as soon as the lock is released 15:03 <+ddnet-discord> the calling function can't do anything with the returned reference AFAICT 15:04 <+ddnet-discord> Yes, that is why there is GetLock 15:04 <+ddnet-discord> and that is also why I use a recursive mutex 15:05 <+ddnet-discord> So ideally you do something like this: 15:05 <+ddnet-discord> ``` 15:05 <+ddnet-discord> { 15:05 <+ddnet-discord> auto Lck = Q.GetLock(); 15:05 <+ddnet-discord> Q.whatever() 15:05 <+ddnet-discord> ... 15:05 <+ddnet-discord> } 15:05 <+ddnet-discord> // Lock released 15:06 <+ddnet-discord> ``` 15:07 <+ddnet-discord> The lock in there is to make reading always threadsafe but yes after returning things might have changed. 15:07 <+ddnet-discord> but what use is the lock in the `Front` function? 15:07 <+ddnet-discord> if you can't use the reference anyway? 15:10 <+ddnet-discord> It is probably not too useful to have these extra locks in there. Do you have an Idea to enforce locking, so it becomes impossible / hard to forget calling GetLock btw ? 16:28 <+ddnet-discord> Sometimes eyes are blocked and you can't change 16:31 <+ddnet-discord> ``` 16:31 <+ddnet-discord> abc 16:31 <+ddnet-discord> ``` 18:10 <+ddnet-discord> @HMH you could force the usage of Queue through a wrapper which aquires the lock in constructor and releases it on destructor 23:44 < dezzer> "/notice Nimda I am not a bot 23:44 <+ddnet-discord> Nonono 23:46 <+ddnet-discord> nonono? 23:50 <+dezzer> yesss 23:50 <+ddnet-discord> have you ever tried Vivaldi browser? 23:52 <+dezzer> vivaldi is shit 23:52 <+dezzer> opera is better 23:52 <+ddnet-discord> vivaldi is closed-source 23:52 <+ddnet-discord> why is shit 23:53 <+ddnet-discord> feels much better than google chroem 23:53 <+ddnet-discord> even if the same engine 23:53 <+ddnet-discord> apparently opera is closed-source as well 23:53 <+ddnet-discord> I don't know, what they did to google chrome 23:53 <+ddnet-discord> wow, like it's 2000 again 23:53 <+ddnet-discord> but it works as shit 23:53 <+ddnet-discord> but it works like shit 23:53 <+ddnet-discord> have you tried firefox? ^^ 23:54 <+ddnet-discord> yea 23:54 <+ddnet-discord> i tried opera, firefox, chrome 23:54 <+ddnet-discord> they are most popular 23:54 <+ddnet-discord> have you tried the new Firefox tho 23:54 <+ddnet-discord> that's why im asking what do you think about vivaldi 23:54 <+ddnet-discord> @Beefywhale 😛 23:54 <+ddnet-discord> what they changed? 23:54 <+ddnet-discord> Everything 23:54 <+ddnet-discord> suddenly, they are monster 23:54 <+ddnet-discord> part of the rendering engine was rewritten in rust 😃 23:54 <+ddnet-discord> of perfromance 23:54 <+ddnet-discord> or what 23:54 <+ddnet-discord> performance and the look 23:55 <+ddnet-discord> it uses barley any ram 23:55 <+ddnet-discord> even with 100+ tabs open 23:55 <+dezzer> firefox is the best browser