loop.call_soon_threadsafe(fut.cancel)
-To handle signals and to execute subprocesses, the event loop must be run in
-the main thread.
-
+To handle signals and to execute subprocesses, the event loop must be run in
+the main thread.
+
+ To schedule a coroutine object from a different thread, the
+ :func:`run_coroutine_threadsafe` function should be used. It returns a
+ :class:`concurrent.futures.Future` to access the result::
+
+ future = asyncio.run_coroutine_threadsafe(coro_func(), loop)
+ result = future.result(timeout) # Wait for the result with a timeout
+
The :meth:`BaseEventLoop.run_in_executor` method can be used with a thread pool
executor to execute a callback in different thread to not block the thread of
the event loop.