Multi-process architecture


#1

Hi, I have question about Electron multi-process architecture.

For example, I created some browser and opened the 3 tabs (tab as webview).

When all three tabs in a single BrowserWindow, the Electron has 6 processes (main, gpu, render for BrowserWindow, and 3 renderer per-tab).

Then, I want to separate tab in the separate window. Since all of the tabs is webview, I dont know how to move a webview into a separate BrowserWindow. But, if I create again new webview in separate BrowserWindow, the two processes will be used (!two processess for one tab!). If, I use BrowserWindow as tab (without webview), I cant draw a window controls (adressbar, etc).

Actually, there are two questions:

  1. Is it possible to move webview between the BrowserWindow?
  2. Is there a way to render webview in a single process with BrowserWindow?

Thanks.


#2
  1. To my knowledge, no. You’re essentially asking for a child process to be moved from one parent process to another. In my understanding, that either isn’t possible or just isn’t done in most multiprocess OS systems.
  2. Again, no. The whole point of a webview is that it is an isolated running space from the parent. If you want to run it in a single process, you can use some other HTML element (maybe an iframe?)

#3

Thanks for answer.

(maybe an iframe?)

Yes, I think about this.
But, this option implies emulation behavior webview (web security, top frame, etc). I have not delved into the question of emulation. Do you think there is every opportunity for this?


#4

I’m not clear on the differences between webview and iframe (other than one spawns a process and one does not). Perhaps someone else here is.