mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
[Voxygen] Switch mutexes to parking_lot and channels to crossbeam.
This commit is contained in:
parent
ef81e8efdc
commit
fda47fc322
36
Cargo.lock
generated
36
Cargo.lock
generated
@ -1484,6 +1484,14 @@ dependencies = [
|
|||||||
"scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "lock_api"
|
||||||
|
version = "0.3.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "log"
|
name = "log"
|
||||||
version = "0.3.9"
|
version = "0.3.9"
|
||||||
@ -1925,6 +1933,16 @@ dependencies = [
|
|||||||
"rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "parking_lot"
|
||||||
|
version = "0.9.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "parking_lot_core"
|
name = "parking_lot_core"
|
||||||
version = "0.3.1"
|
version = "0.3.1"
|
||||||
@ -1964,6 +1982,20 @@ dependencies = [
|
|||||||
"winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
"winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "parking_lot_core"
|
||||||
|
version = "0.6.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "peeking_take_while"
|
name = "peeking_take_while"
|
||||||
version = "0.1.2"
|
version = "0.1.2"
|
||||||
@ -2991,6 +3023,7 @@ dependencies = [
|
|||||||
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"msgbox 0.1.1 (git+https://github.com/bekker/msgbox-rs.git)",
|
"msgbox 0.1.1 (git+https://github.com/bekker/msgbox-rs.git)",
|
||||||
"num 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"portpicker 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"portpicker 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rodio 0.8.1 (git+https://github.com/desttinghim/rodio.git?rev=dd93f905c1afefaac03c496a666ecab27d3e391b)",
|
"rodio 0.8.1 (git+https://github.com/desttinghim/rodio.git?rev=dd93f905c1afefaac03c496a666ecab27d3e391b)",
|
||||||
@ -3366,6 +3399,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
"checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83"
|
"checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83"
|
||||||
"checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c"
|
"checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c"
|
||||||
"checksum lock_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ed946d4529956a20f2d63ebe1b69996d5a2137c91913fe3ebbeff957f5bca7ff"
|
"checksum lock_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ed946d4529956a20f2d63ebe1b69996d5a2137c91913fe3ebbeff957f5bca7ff"
|
||||||
|
"checksum lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8912e782533a93a167888781b836336a6ca5da6175c05944c86cf28c31104dc"
|
||||||
"checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b"
|
"checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b"
|
||||||
"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7"
|
"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7"
|
||||||
"checksum lz4-compress 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f966533a922a9bba9e95e594c1fdb3b9bf5fdcdb11e37e51ad84cd76e468b91"
|
"checksum lz4-compress 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f966533a922a9bba9e95e594c1fdb3b9bf5fdcdb11e37e51ad84cd76e468b91"
|
||||||
@ -3415,9 +3449,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
"checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5"
|
"checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5"
|
||||||
"checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337"
|
"checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337"
|
||||||
"checksum parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa7767817701cce701d5585b9c4db3cdd02086398322c1d7e8bf5094a96a2ce7"
|
"checksum parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa7767817701cce701d5585b9c4db3cdd02086398322c1d7e8bf5094a96a2ce7"
|
||||||
|
"checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252"
|
||||||
"checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c"
|
"checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c"
|
||||||
"checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9"
|
"checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9"
|
||||||
"checksum parking_lot_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cb88cb1cb3790baa6776844f968fea3be44956cf184fa1be5a03341f5491278c"
|
"checksum parking_lot_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cb88cb1cb3790baa6776844f968fea3be44956cf184fa1be5a03341f5491278c"
|
||||||
|
"checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b"
|
||||||
"checksum peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
|
"checksum peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
|
||||||
"checksum percent-encoding 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba4f28a6faf4ffea762ba8f4baef48c61a6db348647c73095034041fc79dd954"
|
"checksum percent-encoding 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba4f28a6faf4ffea762ba8f4baef48c61a6db348647c73095034041fc79dd954"
|
||||||
"checksum petgraph 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3659d1ee90221741f65dd128d9998311b0e40c5d3c23a62445938214abce4f"
|
"checksum petgraph 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3659d1ee90221741f65dd128d9998311b0e40c5d3c23a62445938214abce4f"
|
||||||
|
@ -58,3 +58,4 @@ rodio = { git = "https://github.com/desttinghim/rodio.git", rev = "dd93f905c1afe
|
|||||||
crossbeam = "0.7.2"
|
crossbeam = "0.7.2"
|
||||||
heaptrack = "0.3.0"
|
heaptrack = "0.3.0"
|
||||||
hashbrown = { version = "0.5.0", features = ["serde", "nightly"] }
|
hashbrown = { version = "0.5.0", features = ["serde", "nightly"] }
|
||||||
|
parking_lot = "0.9.0"
|
||||||
|
@ -6,10 +6,11 @@ use crossbeam::{
|
|||||||
queue::SegQueue,
|
queue::SegQueue,
|
||||||
sync::ShardedLock,
|
sync::ShardedLock,
|
||||||
};
|
};
|
||||||
|
use parking_lot::{Condvar, Mutex};
|
||||||
use rodio::{Decoder, Device, Sink};
|
use rodio::{Decoder, Device, Sink};
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::BufReader;
|
use std::io::BufReader;
|
||||||
use std::sync::{Arc, Condvar, Mutex};
|
use std::sync::Arc;
|
||||||
use std::thread;
|
use std::thread;
|
||||||
|
|
||||||
trait AudioConfig {
|
trait AudioConfig {
|
||||||
@ -136,7 +137,7 @@ impl AudioPlayer {
|
|||||||
fn set_playing(&self, playing: bool) {
|
fn set_playing(&self, playing: bool) {
|
||||||
*self.event_loop.playing.write().unwrap() = playing;
|
*self.event_loop.playing.write().unwrap() = playing;
|
||||||
let &(ref lock, ref condvar) = &*self.event_loop.condvar;
|
let &(ref lock, ref condvar) = &*self.event_loop.condvar;
|
||||||
let mut started = lock.lock().unwrap();
|
let mut started = lock.lock();
|
||||||
*started = playing;
|
*started = playing;
|
||||||
if playing {
|
if playing {
|
||||||
condvar.notify_one();
|
condvar.notify_one();
|
||||||
@ -157,10 +158,10 @@ impl MonoMode for AudioPlayer {
|
|||||||
thread::spawn(move || {
|
thread::spawn(move || {
|
||||||
let block = || {
|
let block = || {
|
||||||
let (ref lock, ref condvar) = *condition;
|
let (ref lock, ref condvar) = *condition;
|
||||||
let mut started = lock.lock().unwrap();
|
let mut started = lock.lock();
|
||||||
*started = false;
|
*started = false;
|
||||||
while !*started {
|
while !*started {
|
||||||
started = condvar.wait(started).unwrap();
|
condvar.wait(&mut started);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
let mut playback = MonoEmitter::new(&Settings::load().audio);
|
let mut playback = MonoEmitter::new(&Settings::load().audio);
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
use discord_rpc_sdk::{DiscordUser, EventHandlers, RichPresence, RPC};
|
|
||||||
use std::time::SystemTime;
|
|
||||||
|
|
||||||
use crate::DISCORD_INSTANCE;
|
use crate::DISCORD_INSTANCE;
|
||||||
|
use crossbeam::channel::{unbounded, Receiver, Sender};
|
||||||
use std::sync::mpsc::Sender;
|
use discord_rpc_sdk::{DiscordUser, EventHandlers, RichPresence, RPC};
|
||||||
use std::sync::{mpsc, Mutex};
|
use parking_lot::Mutex;
|
||||||
use std::thread;
|
use std::thread;
|
||||||
use std::thread::JoinHandle;
|
use std::thread::JoinHandle;
|
||||||
|
use std::time::SystemTime;
|
||||||
|
|
||||||
/// Connects to the discord application where Images and more resides
|
/// Connects to the discord application where Images and more resides
|
||||||
/// can be viewed at https://discordapp.com/developers/applications/583662036194689035/rich-presence/assets
|
/// can be viewed at https://discordapp.com/developers/applications/583662036194689035/rich-presence/assets
|
||||||
@ -30,7 +28,7 @@ pub struct DiscordState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn run() -> Mutex<DiscordState> {
|
pub fn run() -> Mutex<DiscordState> {
|
||||||
let (tx, rx) = mpsc::channel();
|
let (tx, rx) = unbounded();
|
||||||
|
|
||||||
Mutex::new(DiscordState {
|
Mutex::new(DiscordState {
|
||||||
tx,
|
tx,
|
||||||
|
@ -9,7 +9,7 @@ extern crate lazy_static;
|
|||||||
pub mod discord;
|
pub mod discord;
|
||||||
|
|
||||||
#[cfg(feature = "discord")]
|
#[cfg(feature = "discord")]
|
||||||
use std::sync::Mutex;
|
use parking_lot::Mutex;
|
||||||
|
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
pub mod ui;
|
pub mod ui;
|
||||||
|
@ -1,12 +1,8 @@
|
|||||||
use client::{error::Error as ClientError, Client};
|
use client::{error::Error as ClientError, Client};
|
||||||
use common::comp;
|
use common::comp;
|
||||||
|
use crossbeam::channel::{unbounded, Receiver, TryRecvError};
|
||||||
use log::info;
|
use log::info;
|
||||||
use std::{
|
use std::{net::ToSocketAddrs, thread, time::Duration};
|
||||||
net::ToSocketAddrs,
|
|
||||||
sync::mpsc::{channel, Receiver, TryRecvError},
|
|
||||||
thread,
|
|
||||||
time::Duration,
|
|
||||||
};
|
|
||||||
|
|
||||||
#[cfg(feature = "discord")]
|
#[cfg(feature = "discord")]
|
||||||
use crate::{discord, discord::DiscordUpdate};
|
use crate::{discord, discord::DiscordUpdate};
|
||||||
@ -38,7 +34,7 @@ impl ClientInit {
|
|||||||
) -> Self {
|
) -> Self {
|
||||||
let (server_address, default_port, prefer_ipv6) = connection_args;
|
let (server_address, default_port, prefer_ipv6) = connection_args;
|
||||||
|
|
||||||
let (tx, rx) = channel();
|
let (tx, rx) = unbounded();
|
||||||
|
|
||||||
thread::spawn(move || {
|
thread::spawn(move || {
|
||||||
// Sleep the thread to wait for the single-player server to start up.
|
// Sleep the thread to wait for the single-player server to start up.
|
||||||
|
@ -8,9 +8,10 @@ use common::{
|
|||||||
vol::{SampleVol, VolSize},
|
vol::{SampleVol, VolSize},
|
||||||
volumes::vol_map_2d::VolMap2dErr,
|
volumes::vol_map_2d::VolMap2dErr,
|
||||||
};
|
};
|
||||||
|
use crossbeam::channel;
|
||||||
use frustum_query::frustum::Frustum;
|
use frustum_query::frustum::Frustum;
|
||||||
use hashbrown::HashMap;
|
use hashbrown::HashMap;
|
||||||
use std::{i32, ops::Mul, sync::mpsc, time::Duration};
|
use std::{i32, ops::Mul, time::Duration};
|
||||||
use vek::*;
|
use vek::*;
|
||||||
|
|
||||||
struct TerrainChunk {
|
struct TerrainChunk {
|
||||||
@ -56,8 +57,8 @@ pub struct Terrain {
|
|||||||
|
|
||||||
// The mpsc sender and receiver used for talking to meshing worker threads.
|
// The mpsc sender and receiver used for talking to meshing worker threads.
|
||||||
// We keep the sender component for no reason other than to clone it and send it to new workers.
|
// We keep the sender component for no reason other than to clone it and send it to new workers.
|
||||||
mesh_send_tmp: mpsc::Sender<MeshWorkerResponse>,
|
mesh_send_tmp: channel::Sender<MeshWorkerResponse>,
|
||||||
mesh_recv: mpsc::Receiver<MeshWorkerResponse>,
|
mesh_recv: channel::Receiver<MeshWorkerResponse>,
|
||||||
mesh_todo: HashMap<Vec2<i32>, ChunkMeshState>,
|
mesh_todo: HashMap<Vec2<i32>, ChunkMeshState>,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,7 +66,7 @@ impl Terrain {
|
|||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
// Create a new mpsc (Multiple Produced, Single Consumer) pair for communicating with
|
// Create a new mpsc (Multiple Produced, Single Consumer) pair for communicating with
|
||||||
// worker threads that are meshing chunks.
|
// worker threads that are meshing chunks.
|
||||||
let (send, recv) = mpsc::channel();
|
let (send, recv) = channel::unbounded();
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
chunks: HashMap::default(),
|
chunks: HashMap::default(),
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
use client::Client;
|
use client::Client;
|
||||||
use common::clock::Clock;
|
use common::clock::Clock;
|
||||||
|
use crossbeam::channel::{unbounded, Receiver, Sender, TryRecvError};
|
||||||
use log::info;
|
use log::info;
|
||||||
use portpicker::pick_unused_port;
|
use portpicker::pick_unused_port;
|
||||||
use server::{Event, Input, Server, ServerSettings};
|
use server::{Event, Input, Server, ServerSettings};
|
||||||
use std::{
|
use std::{
|
||||||
net::SocketAddr,
|
net::SocketAddr,
|
||||||
sync::mpsc::{channel, Receiver, Sender, TryRecvError},
|
|
||||||
thread::{self, JoinHandle},
|
thread::{self, JoinHandle},
|
||||||
time::Duration,
|
time::Duration,
|
||||||
};
|
};
|
||||||
@ -28,7 +28,7 @@ pub struct Singleplayer {
|
|||||||
|
|
||||||
impl Singleplayer {
|
impl Singleplayer {
|
||||||
pub fn new(client: Option<&Client>) -> (Self, SocketAddr) {
|
pub fn new(client: Option<&Client>) -> (Self, SocketAddr) {
|
||||||
let (sender, receiver) = channel();
|
let (sender, receiver) = unbounded();
|
||||||
|
|
||||||
let sock = SocketAddr::from((
|
let sock = SocketAddr::from((
|
||||||
[127, 0, 0, 1],
|
[127, 0, 0, 1],
|
||||||
|
Loading…
Reference in New Issue
Block a user