这篇教程C++ sw_free函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中sw_free函数的典型用法代码示例。如果您正苦于以下问题:C++ sw_free函数的具体用法?C++ sw_free怎么用?C++ sw_free使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了sw_free函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: swDataBuffer_clearint swDataBuffer_clear(swDataBuffer *data_buffer, int fd){ swDataBuffer_item *item = NULL; swHashMap_add_int(&data_buffer->map, fd, item); if (item == NULL) { swTrace("buffer item not found/n"); return SW_ERR; } else { swDataBuffer_trunk *trunk = item->head; swDataBuffer_trunk *will_free_trunk; //保存trunk的指针,用于释放内存 while (trunk != NULL) { sw_free(trunk->data); will_free_trunk = trunk; trunk = trunk->next; sw_free(will_free_trunk); } swHashMap_del_int(&data_buffer->map, fd); sw_free(item); } return SW_OK;}
开发者ID:ZheYuan,项目名称:swoole,代码行数:25,
示例2: swDataBuffer_flushint swDataBuffer_flush(swDataBuffer *data_buffer, swDataBuffer_item *item){ if(item->head == NULL) { return SW_ERR; } item->head->len = 0; item->tail = item->head; item->trunk_num = 1; item->length = 0; swDataBuffer_trunk *trunk = item->head->next; swDataBuffer_trunk *will_free_trunk; //保存trunk的指针,用于释放内存 while (trunk!= NULL) { trunk->len = 0; sw_free(trunk->data); will_free_trunk = trunk; trunk = trunk->next; //这里会指向下个指针,所以需要保存 sw_free(will_free_trunk);// swWarn("will_free_trunk"); } item->head->next = NULL; return SW_OK;}
开发者ID:ZheYuan,项目名称:swoole,代码行数:26,
示例3: swFactoryThread_writer_loopstatic int swFactoryThread_writer_loop(swThreadParam *param){ swFactory *factory = param->object; swFactoryThread *this = factory->object; int pti = param->pti; int ret; swEventData *req; //main loop while (swoole_running > 0) { ret = read(this->writers[pti].evfd, &req, sizeof(&req)); printf("[WriteThread]recv: %d|ret=%d/n", pti, ret); if (ret > 0) { factory->onTask(factory, req); sw_free(req); } else { swTrace("[swFactoryThread_writer_loop]read eventfd error"); } } //shutdown close(this->writers[pti].evfd); sw_free(param); pthread_exit(SW_OK); return SW_OK;}
开发者ID:mickelfeng,项目名称:php_swoole,代码行数:29,
示例4: swReactorKqueue_freestatic void swReactorKqueue_free(swReactor *reactor){ swReactorKqueue *this = reactor->object; close(this->epfd); sw_free(this->events); sw_free(this);}
开发者ID:leoozhao,项目名称:swoole-src,代码行数:7,
示例5: swFactoryThread_writer_loopstatic int swFactoryThread_writer_loop(swThreadParam *param){ swFactory *factory = param->object; swFactoryThread *this = factory->object; int pti = param->pti; swEventData *req; uint64_t flag; //main loop while (swoole_running > 0) { if(swRingBuffer_pop(&(this->buffers[pti]), (void **)&req)==0) { factory->onTask(factory, req); sw_free(req); } else { read(this->writers[pti].evfd, &flag, sizeof(flag)); } } factory->running = 0; //shutdown close(this->writers[pti].evfd); sw_free(param); pthread_exit(SW_OK); return SW_OK;}
开发者ID:29n,项目名称:php_swoole,代码行数:28,
示例6: swPort_freevoid swPort_free(swListenPort *port){#ifdef SW_USE_OPENSSL if (port->ssl) { if (port->ssl_context) { swSSL_free_context(port->ssl_context); } sw_free(port->ssl_option.cert_file); sw_free(port->ssl_option.key_file); if (port->ssl_option.client_cert_file) { sw_free(port->ssl_option.client_cert_file); } }#endif close(port->sock); //remove unix socket file if (port->type == SW_SOCK_UNIX_STREAM || port->type == SW_SOCK_UNIX_DGRAM) { unlink(port->host); }}
开发者ID:haixingdev,项目名称:swoole-src,代码行数:26,
示例7: swReactorEpoll_freevoid swReactorEpoll_free(swReactor *reactor){ swReactorEpoll *object = reactor->object; close(object->epfd); sw_free(object->events); sw_free(object);}
开发者ID:nevernet,项目名称:swoole,代码行数:7,
示例8: swBuffer_flushint swBuffer_flush(swBuffer *buffer){ if(buffer->head == NULL) { return SW_ERR; } buffer->head->length = 0; buffer->tail = buffer->head; buffer->trunk_num = 1; buffer->length = 0; swBuffer_trunk *trunk = buffer->head->next; swBuffer_trunk *will_free_trunk; //保存trunk的指针,用于释放内存 while (trunk!= NULL) { trunk->length = 0; sw_free(trunk->data); will_free_trunk = trunk; trunk = trunk->next; //这里会指向下个指针,所以需要保存 sw_free(will_free_trunk);// swWarn("will_free_trunk"); } buffer->head->next = NULL; return SW_OK;}
开发者ID:amphisbe,项目名称:swoole,代码行数:27,
示例9: swTimer_delint swTimer_del(swTimer *timer, swTimer_node *tnode){ if (tnode->remove) { return SW_FALSE; } if (SwooleG.timer._current_id > 0 && tnode->id == SwooleG.timer._current_id) { tnode->remove = 1; return SW_TRUE; } if (swHashMap_del_int(timer->map, tnode->id) < 0) { return SW_ERR; } //remove from min-heap swHeap_remove(timer->heap, tnode->heap_node); if (tnode->heap_node) { sw_free(tnode->heap_node); } sw_free(tnode); timer->num --; return SW_TRUE;}
开发者ID:netcode,项目名称:swoole-src,代码行数:25,
示例10: swReactorEpoll_freevoid swReactorEpoll_free(swReactor *reactor){ swReactorEpoll *this = reactor->object; close(this->epfd); sw_free(this->events); sw_free(this);}
开发者ID:Aaron-Teng,项目名称:swoole,代码行数:7,
示例11: swDataBuffer_clearint swDataBuffer_clear(swDataBuffer *data_buffer, int fd){ swDataBuffer_item *item = NULL; HASH_FIND_INT(data_buffer->ht, &fd, item); if (item == NULL) { swTrace("buffer item not found/n"); return SW_ERR; } else { swDataBuffer_trunk *trunk = item->first; swDataBuffer_trunk *will_free_trunk; //保存trunk的指针,用于释放内存 while (trunk != NULL) { sw_free(trunk->data); will_free_trunk = trunk; trunk = trunk->next; sw_free(will_free_trunk); } HASH_DEL(data_buffer->ht, item); sw_free(item); } return SW_OK;}
开发者ID:899,项目名称:swoole,代码行数:25,
示例12: swFactoryThread_writer_loopstatic int swFactoryThread_writer_loop(swThreadParam *param){ swFactory *factory = param->object; swServer *serv = factory->ptr; swFactoryThread *this = factory->object; int pti = param->pti; int ret; swEventData *req; uint64_t flag; //cpu affinity setting#if HAVE_CPU_AFFINITY if (serv->open_cpu_affinity) { cpu_set_t cpu_set; CPU_ZERO(&cpu_set); CPU_SET(pti % SW_CPU_NUM, &cpu_set); if (0 != pthread_setaffinity_np(pthread_self(), sizeof(cpu_set), &cpu_set)) { swTrace("pthread_setaffinity_np set fail/n"); } }#endif if (serv->onWorkerStart != NULL) { serv->onWorkerStart(serv, pti); } swSingalNone(); //main loop while (swoole_running > 0) { if (swRingQueue_pop(&(this->queues[pti]), (void **) &req) == 0) { factory->last_from_id = req->info.from_id; factory->onTask(factory, req); sw_free(req); } else { ret = this->writers[pti].evfd.read(&this->writers[pti].evfd, &flag, sizeof(flag)); if (ret < 0) { swTrace("read fail.errno=%d", errno); } } } //shutdown this->writers[pti].evfd.close(&this->writers[pti].evfd); if (serv->onWorkerStop != NULL) { serv->onWorkerStop(serv, pti); } sw_free(param); pthread_exit(SW_OK); return SW_OK;}
开发者ID:kedyyan,项目名称:swoole,代码行数:58,
示例13: swTimer_delvoid swTimer_del(swTimer *timer, swTimer_node *tnode){ swHeap_remove(timer->heap, tnode->heap_node); if (tnode->heap_node) { sw_free(tnode->heap_node); } sw_free(tnode);}
开发者ID:akrick,项目名称:swoole-src,代码行数:9,
示例14: swFactoryThread_shutdownint swFactoryThread_shutdown(swFactory *factory){ swoole_running = 0; swFactoryThread *this = factory->object; sw_free(this->writers); sw_free(this->queues); sw_free(this); return SW_OK;}
开发者ID:kedyyan,项目名称:swoole,代码行数:9,
示例15: swProcessPool_freestatic void swProcessPool_free(swProcessPool *pool){ int i; swPipe *pipe; for (i = 0; i < pool->worker_num; i++) { pipe = &pool->pipes[i]; pipe->close(pipe); } sw_free(pool->workers); sw_free(pool->pipes); swHashMap_free(&pool->map);}
开发者ID:4399data,项目名称:swoole,代码行数:13,
示例16: swTimeWheel_freevoid swTimeWheel_free(swTimeWheel *tw){ int i; for (i = 0; i < tw->size; i++) { if (tw->wheel[i] != NULL) { swHashMap_free(tw->wheel[i]); tw->wheel[i] = NULL; } } sw_free(tw->wheel); sw_free(tw);}
开发者ID:netcode,项目名称:swoole-src,代码行数:14,
示例17: swTimer_addstatic swTimer_node* swTimer_add(swTimer *timer, int _msec, int interval, void *data, swTimerCallback callback){ swTimer_node *tnode = sw_malloc(sizeof(swTimer_node)); if (!tnode) { swSysError("malloc(%ld) failed.", sizeof(swTimer_node)); return NULL; } int64_t now_msec = swTimer_get_relative_msec(); if (now_msec < 0) { sw_free(tnode); return NULL; } tnode->data = data; tnode->type = SW_TIMER_TYPE_KERNEL; tnode->exec_msec = now_msec + _msec; tnode->interval = interval ? _msec : 0; tnode->remove = 0; tnode->callback = callback; tnode->round = timer->round; if (timer->_next_msec < 0 || timer->_next_msec > _msec) { timer->set(timer, _msec); timer->_next_msec = _msec; } tnode->id = timer->_next_id++; if (unlikely(tnode->id < 0)) { tnode->id = 1; timer->_next_id = 2; } timer->num++; tnode->heap_node = swHeap_push(timer->heap, tnode->exec_msec, tnode); if (tnode->heap_node == NULL) { sw_free(tnode); return NULL; } swTrace("id=%ld, exec_msec=%" PRId64 ", msec=%d, round=%" PRIu64, tnode->id, tnode->exec_msec, _msec, tnode->round); swHashMap_add_int(timer->map, tnode->id, tnode); return tnode;}
开发者ID:didiwuliu,项目名称:swoole-src,代码行数:48,
示例18: swConnection_get_in_bufferSWINLINE swBuffer_trunk* swConnection_get_in_buffer(swConnection *conn){ swBuffer_trunk *trunk = NULL; swBuffer *buffer; if (conn->in_buffer == NULL) { buffer = swBuffer_new(SW_BUFFER_SIZE); //buffer create failed if (buffer == NULL) { return NULL; } //new trunk trunk = swBuffer_new_trunk(buffer, SW_TRUNK_DATA, buffer->trunk_size); if (trunk == NULL) { sw_free(buffer); return NULL; } conn->in_buffer = buffer; } else { buffer = conn->in_buffer; trunk = buffer->tail; if (trunk == NULL || trunk->length == buffer->trunk_size) { trunk = swBuffer_new_trunk(buffer, SW_TRUNK_DATA, buffer->trunk_size); } } return trunk;}
开发者ID:woyear,项目名称:swoole,代码行数:33,
示例19: aio_onReadFileCompletedstatic void aio_onReadFileCompleted(swAio_event *event){ zval *retval = NULL; zval *result = NULL; SW_MAKE_STD_ZVAL(result); if (event->ret < 0) { SwooleG.error = event->error; ZVAL_BOOL(result, 0); } else { ZVAL_STRINGL(result, event->buf, event->ret); sw_free(event->buf); } php_context *context = (php_context *) event->object; int ret = coro_resume(context, result, &retval); if (ret == CORO_END && retval) { sw_zval_ptr_dtor(&retval); } sw_zval_ptr_dtor(&result); efree(event->req); efree(context);}
开发者ID:didiwuliu,项目名称:swoole-src,代码行数:27,
示例20: swServer_reactor_thread_onWriteint swServer_reactor_thread_onWrite(swReactor *reactor, swDataHead *ev){ swServer *serv = SwooleG.serv; swConnection *conn = swServer_get_connection(serv, ev->fd); int ret, sendn; if (conn->output.send_file != NULL) { swTask_sendfile *task = conn->output.send_file; sendn = (task->filesize - task->offset > SW_SENDFILE_TRUNK) ? SW_SENDFILE_TRUNK : task->filesize - task->offset; ret = sendfile(ev->fd, task->fd, &task->offset, sendn); //swWarn("ret=%d|task->offset=%ld|sendn=%d|filesize=%ld", ret, task->offset, sendn, task->filesize); if (ret < 0) { swWarn("sendfile failed. Error: %s[%d]", strerror(errno), errno); return SW_ERR; } if (task->offset >= task->filesize) { reactor->set(reactor, ev->fd, SW_EVENT_TCP | SW_EVENT_READ); conn->output.send_file = NULL; close(task->fd); sw_free(task); } } return SW_OK;}
开发者ID:ZheYuan,项目名称:swoole,代码行数:27,
示例21: swServer_poll_loop/** * Main Loop */static int swServer_poll_loop(swThreadParam *param){ swServer *serv = param->object; int ret, pti = param->pti; swReactor *reactor = &(serv->threads[pti].reactor); struct timeval timeo; ret = swReactorEpoll_create(reactor, (serv->max_conn / serv->poll_thread_num) + 1); if (ret < 0) { return SW_ERR; } timeo.tv_sec = serv->timeout_sec; timeo.tv_usec = serv->timeout_usec; //300ms reactor->ptr = serv; reactor->setHandle(reactor, SW_FD_CLOSE, swServer_poll_onClose); //Thread mode must copy the data. //will free after onFinish if(serv->factory_mode == SW_MODE_THREAD) { reactor->setHandle(reactor, SW_FD_CONN, swServer_poll_onReceive2); } else { reactor->setHandle(reactor, SW_FD_CONN, swServer_poll_onReceive); } //main loop reactor->wait(reactor, &timeo); //shutdown reactor->free(reactor); sw_free(param); return SW_OK;}
开发者ID:mickelfeng,项目名称:php_swoole,代码行数:36,
示例22: swServer_poll_onReceive2static int swServer_poll_onReceive2(swReactor *reactor, swEvent *event){ int ret; swServer *serv = reactor->ptr; swFactory *factory = &(serv->factory); swEventData *buf = sw_malloc(sizeof(swEventData)); if(buf==NULL) { swTrace("Malloc fail/n"); return SW_ERR; } bzero(buf->data, sizeof(buf->data)); ret = swRead(event->fd, buf->data, SW_BUFFER_SIZE); if (ret < 0) { swTrace("Receive Error.Fd=%d.From=%d/n", event->fd, event->from_id); return SW_ERR; } else if (ret == 0) { swTrace("Close Event.FD=%d|From=%d/n", event->fd, event->from_id); sw_free(buf); return swServer_close(serv, event); } else { buf->fd = event->fd; buf->len = ret; buf->from_id = event->from_id; //swTrace("recv: %s|fd=%d|ret=%d|errno=%d/n", buf->data, event->fd, ret, errno); factory->dispatch(factory, buf); } return SW_OK;}
开发者ID:mickelfeng,项目名称:php_swoole,代码行数:34,
示例23: swTable_compress_liststatic void swTable_compress_list(swTable *table){ table->lock.lock(&table->lock); swTableRow **tmp = sw_malloc(sizeof(swTableRow *) * table->size); if (!tmp) { swWarn("malloc() failed, cannot compress the jump table."); goto unlock; } int i, tmp_i = 0; for (i = 0; i < table->list_n; i++) { if (table->rows_list[i] != NULL) { tmp[tmp_i] = table->rows_list[i]; tmp[tmp_i]->list_index = tmp_i; tmp_i++; } } memcpy(table->rows_list, tmp, sizeof(swTableRow *) * tmp_i); sw_free(tmp); table->list_n = tmp_i; unlock: table->lock.unlock(&table->lock);}
开发者ID:WhoAmMe,项目名称:swoole,代码行数:28,
示例24: swClient_freevoid swClient_free(swClient *cli){ assert(cli->socket->fd != 0); //remove from reactor if (!cli->socket->closed) { cli->close(cli); } if (cli->socket->out_buffer) { swBuffer_free(cli->socket->out_buffer); cli->socket->out_buffer = NULL; } if (cli->socket->in_buffer) { swBuffer_free(cli->socket->in_buffer); cli->socket->in_buffer = NULL; } bzero(cli->socket, sizeof(swConnection)); if (cli->async) { cli->socket->removed = 1; } else { sw_free(cli->socket); }}
开发者ID:google2013,项目名称:swoole-src,代码行数:28,
示例25: swPipeEventfd_closestatic int swPipeEventfd_close(swPipe *p){ int ret; ret = close(((swPipeEventfd *)(p->object))->event_fd); sw_free(p->object); return ret;}
开发者ID:EtcDot,项目名称:swoole-src,代码行数:7,
示例26: swFactoryThread_onTaskstatic int swFactoryThread_onTask(swThreadPool *pool, void *data, int len){ swFactory *factory = pool->ptr2; int ret = factory->onTask(factory, (swEventData*) data); sw_free(data); return ret;}
开发者ID:190235047,项目名称:swoole-src,代码行数:7,
示例27: swProcessPool_freestatic void swProcessPool_free(swProcessPool *pool){ int i; swPipe *_pipe; if (!pool->use_msgqueue) { for (i = 0; i < pool->worker_num; i++) { _pipe = &pool->pipes[i]; _pipe->close(_pipe); } sw_free(pool->pipes); } else if (pool->msgqueue_key == 0) { pool->queue->remove = 1; swMsgQueue_free(pool->queue); } if (pool->map) { swHashMap_free(pool->map); }}
开发者ID:LinkedDestiny,项目名称:swoole-src,代码行数:25,
示例28: swTimeWheel_newswTimeWheel* swTimeWheel_new(uint16_t size){ swTimeWheel *tw = sw_malloc(sizeof(swTimeWheel)); if (!tw) { swWarn("malloc(%ld) failed.", sizeof(swTimeWheel)); return NULL; } tw->size = size; tw->current = 0; tw->wheel = sw_calloc(size, sizeof(void*)); if (tw->wheel == NULL) { swWarn("malloc(%ld) failed.", sizeof(void*) * size); sw_free(tw); return NULL; } int i; for (i = 0; i < size; i++) { tw->wheel[i] = swHashMap_new(16, NULL); if (tw->wheel[i] == NULL) { swTimeWheel_free(tw); return NULL; } } return tw;}
开发者ID:netcode,项目名称:swoole-src,代码行数:31,
示例29: swWorker_createint swWorker_create(swWorker *worker){ /** * Create shared memory storage */ void *store = sw_shm_malloc(SwooleG.serv->buffer_output_size); if (store == NULL) { swWarn("malloc for worker->store failed."); return SW_ERR; } swPipe *worker_notify = sw_malloc(sizeof(swPipe)); if (worker_notify == NULL) { swWarn("malloc for worker->notify failed."); sw_shm_free(store); return SW_ERR; } /** * Create notify pipe */ if (swPipeNotify_auto(worker_notify, 1, 0)) { sw_shm_free(store); sw_free(worker_notify); return SW_ERR; } worker->notify = worker_notify; worker->store.ptr = store; worker->store.lock = 0; return SW_OK;}
开发者ID:1060460048,项目名称:swoole,代码行数:35,
示例30: swPipeUnsock_closevoid swPipeUnsock_close(swPipe *p){ swPipeUnsock *this = p->object; close(this->socks[0]); close(this->socks[1]); sw_free(this);}
开发者ID:Aaron-Teng,项目名称:swoole,代码行数:7,
注:本文中的sw_free函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ sw_malloc函数代码示例 C++ sw_calloc函数代码示例 |