<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

async def monitor_start(self, monitor):
        '''Create the socket listening to the ``bind`` address.

        If the platform does not support multiprocessing sockets set the
        number of workers to 0.
        '''
        cfg = self.cfg
        if (not platform.has_multiprocessing_socket or
                cfg.concurrency == 'thread'):
            cfg.set('workers', 0)
        servers = await self.binds(monitor)
        if not servers:
            raise ImproperlyConfigured('Could not open a socket. '
                                       'No address to bind to')
        addresses = []
        for server in servers.values():
            addresses.extend(server.addresses)
        self.cfg.addresses = addresses