Aktywne Wpisy
![WenerowaAngela](https://wykop.pl/cdn/c0834752/f5300bc7b3458a22450ba6c911732dc619cfaf68bca1264497ad1ce864d7e7c0,q60.jpg)
WenerowaAngela +164
No heloł
![WenerowaAngela - No heloł](https://wykop.pl/cdn/c3201142/6b0af921c842e239cee957c51affc1cc2ac4dc8030b5f42c8d07c518c2ea69a2,w150.jpg)
źródło: temp_file8956945580602058191
Pobierz![Kopytnik_1](https://wykop.pl/cdn/c3397992/Kopytnik_1_reIcPSwSp3,q60.jpg)
Kopytnik_1 +19
#wojna #rosja #ukraina #polska #nato #wojsko #pytaniedoeksperta #ciekawostki
Jak to jest możliwe? Czym i kim Rosjanie są w stanie zaatakować NATO? Tworzą potajemnie armię klonów? Czy to nie jest czasem ta sama armia, która teraz z mozołem tygodniami zajmuje miasteczka na Ukrainie o wielkości Pruszkowa, tracąc przy tym tysiące zabitych i rannych? Czyli co, za kilka lat to będzie już inna armia, nowocześniejsza i bardziej liczna?
Jak to jest możliwe? Czym i kim Rosjanie są w stanie zaatakować NATO? Tworzą potajemnie armię klonów? Czy to nie jest czasem ta sama armia, która teraz z mozołem tygodniami zajmuje miasteczka na Ukrainie o wielkości Pruszkowa, tracąc przy tym tysiące zabitych i rannych? Czyli co, za kilka lat to będzie już inna armia, nowocześniejsza i bardziej liczna?
![Kopytnik_1 - #wojna #rosja #ukraina #polska #nato #wojsko #pytaniedoeksperta #ciekawo...](https://wykop.pl/cdn/c3201142/c3afe3a35f696ab2b39fad88bbd195c3c8cbbfeea94a9bb790db89532b04a964,w150.png?author=Kopytnik_1&auth=153ee745a19d15484631686f3a0c1ba9)
źródło: Screenshot_20240424-030651~2
Pobierz
Dopiero zaczynam przygodę z wątkami i chcę wrzucić cześć kodu do wątków aby go mocno przyspieszyć(za pomocą Rayon).
Stworzyłem póki co taki kod(który oczywiście się nie kompiluje)
self.imagestocheck.paritermut().map(|fileentry| {
let image = match image::open(fileentry.path.clone()) {
Ok(t) => t,
Err() => return, // Something is wrong with image
};
let dimensions = image.dimensions();
fileentry.dimensions = format!("{}x{}", dimensions.0, dimensions.1);
let hasher = HasherConfig::withbytestype::<[u8; 8]>().tohasher();
let hash = hasher.hashimage(ℑ);
let mut buf = [0u8; 8];
buf.copyfromslice(&hash.asbytes());
self.bktree.add(buf);
self.imagehashes.entry(buf).orinsertwith(Vec::::new);
self.imagehashes.getmut(&buf).unwrap().push(fileentry.clone());
});
Pastebin - https://pastebin.com/t8uRANEg
Problemem, jak pewnie na pierwszy rzut oka jest wiadome, jest użycie
self
wewnątrz domknięcia, przez co wywala dwa błędy -error[E0500]: closure requires unique access to
self
but it is already borrowedoraz
error[E0596]: cannot borrow
self.image_hashes
as mutable, asFn
closures cannot mutate their captured variablesW jaki sposób powinienem taką sytuację obsłużyć?
Jest jakiś prosty, dobry i aktualny poradnik do biblioteki Rayon?
#rustlang #programowanie #naukaprogramowania
1. w map() zwracać buf
2. zrobić collect() do Vec<>
3. W funkcji wyżej iterować i przekazać do struktur self.kbtree i self.image_hahses
tak jak w tym przykładzie: https://github.com/rayon-rs/rayon/issues/210#issuecomment-551319338
Z innego wątku przekazuję sygnał wyłączenia, ale nie wiem jak go obsłużyć w Rayon.
Potrzebuję jak najszybciej, przerywając wątki lub czekając na ich zakończenie(nie wszystkich, tylko tych uruchomionych)
To zwracane przez funkcję bool określa czy funkcja została przerwana(false) czy też nie(true)
fn sortimages(&mut self, stopreceiver: Option<&Receiver<()>>) -> bool {
let hashmapmodification = SystemTime::now();
let vec
filter_map
użyćmap
i skorzystać zwhile_some
https://docs.rs/rayon/1.5.0/rayon/iter/trait.ParallelIterator.html#method.while_somewhile_some
działa dobrze, ale z tego co widzę to tylko przerywa wykonywanie danych wątków.Czy jest możliwe przy jej użyciu wyjście z zewnętrznej funkcji?
Nie widzę póki co żadnej metody na określenie czy wątki zostały przerwane przez użytkownika(funkcja
while_some
przerwała to) czy wszystkie zakończyły się poprawnie same.AtomicBool
i ustawiaj ją wmap
gdy użytkownik przerwie operację