
Dropping a big/network folder causes a hang
Reported by Jim Puls | December 27th, 2010 @ 08:30 PM | in 0.0.4
What I did: I dropped a folder on the dock icon. This was a big folder from a network share.
What I expected to happen: "Fully concurrent — loading files, syntax highlighting, etc is distributed across available CPU cores. Minimal waiting time."
What actually happened: Main thread load. Hang until the recursive directory walk is done.
Comments and changes to this ticket
-
rsms December 31st, 2010 @ 04:00 PM
- Milestone set to 0.0.4
- State changed from new to open
- Tag changed from hang to bug, directory, io, reading, sidebar, spin
- Milestone order changed from 75 to 0
This is due to Bad Code™ from my part. The whole "sidebar and directories" stuff is broken by design (ha, ha) since I just wanted to get a first quick and dirty version out there.
Reading of directory contents should be performed using asynchronous operations. This could be solved in several ways, though there are two main alternatives:
-
Reading-and-yielding on the main thread.
-
Reading in a dispatch queue.
I prefer (2) as it's both a simpler approach, provides for cleaner code and better harvests the performance of OS X. Note that reading directory contents requires the use of blocking syscalls, thus we will not be able to make this a truly asynchronous operation.
-
rsms December 31st, 2010 @ 04:03 PM
- Tag changed from bug, directory, io, reading, sidebar, spin to bug, directory, io, nodejs, reading, sidebar, spin
Maybe we should even delegate this kind of work to the nodejs layer. It might be slightly slower as nodejs implementation of reading directory contents generates a high amount of queueing-dequeueing-performing-enqueueing-callingback operations, but it would make development easier.
-
-
surin May 28th, 2022 @ 08:32 AM
ดูทีวีออนไลน์ พร้อมเล่น pg ดูทีวีออนไลน์ พร้อมเล่น เกมออนไลน์ เกม pg slot เล่นเเล้วได้เงินจริง โบนัสมากมาย ระบบออโต้ PG สล็อตแตกบ่อยแตกง่าย จ่ายจริงส่งตรงถึงที่หน้าบ้านคุณ
Please Sign in or create a free account to add a new ticket.
With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.